Taskwarrior Performance
The results of the nightly benchmark runs:
task all
task list
task next
task add
While performance has not yet been addressed in the 2.0 product, this list of potential areas for improvement is being gathered.
<red> DATA </red><red> DATA </red>This should be located and reduced to:
<red> DATA DATA </red>This will reduce the volume of output generated, and in need of reinterpretation by the terminal program.
Modifying Arg::_category and Arg::_type from std::string to enum has made a significantly larger gain in E9::eval performance than expected. Using the standard test data and queries, average filter times dropped from:
task all 8514 → 5829 = 31% task list 6711 → 4644 = 30% task next 6587 → 4607 = 30%
Taskwarrior 2.0 has several new components, which impact performance:
The combination of the above changes means that it is no longer valid to compare 2.0 to earlier versions. Earlier data has been dropped, and 2.0 will be the performance baseline.
A standard data set has been defined for performance testing. 'Hamlet', Act I, has been loaded as a set of tasks. Each line spoken is a task description, all speakers are added as tags, any royal titles are projects, anything Hamlet says is logged instead of added, and all lines spoken by Ghost are annotations to the prior line.
This result is a nice mix of pending versus completed, short and long descriptions. There are 194 tasks, and will exercise the data load and rendering.
A nightly run of several reports against the standard testing data is being performed, and data is being accumulated. The performance results of this will be made available online.