GothenburgBitFactory / GothenburgBitFactory/taskwarrior

Profile TW performance with large task DBs

Open
#3,618 8 comments 0 reactions 1 assignee Claimed by @felixschurk View on GitHub
topic:performance
Dominant language
C++
Stars
6.1k
Forks
423
Avg merge
1d 19h
Merged PRs (30d)
11

Description

...Probably running a profiler is the action item from this issue...

_Originally posted by @djmitche in https://github.com/GothenburgBitFactory/taskwarrior/issues/3329#issuecomment-2335007219_

---

I think this would be best done from Taskwarrior, treating the Rust code as a "black box". It would be great to learn which calls into Rust are taking the longest -- and what non-Rust things are taking a long time, too. I can think of a few possibilities we might learn, but the truth is probably something different:
* Opening the DB might take a long time (partly due to #3418)
* Writes may be super-slow (https://github.com/GothenburgBitFactory/taskchampion/issues/373 should help with this, by doing writes in fewer transactions)
* We may be calling into Rust repeatedly in a way that is wasteful (e.g., `TDB2::pending_tasks`)
* The translation between Rust and C++ data structures may be slow (C++'s `std::string` and Rust's `String` are not compatible)

I don't know much about profiling in C++, but perhaps you, dear reader, do?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.