GothenburgBitFactory / GothenburgBitFactory/taskwarrior
Profile TW performance with large task DBs
- 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
Assessment
This issue has not been assessed yet.