Taskwarrior Performance

Benchmark Results

The results of the nightly benchmark runs:
task all
task list
task next
task add

Potential Improvements

While performance has not yet been addressed in the 2.0 product, this list of potential areas for improvement is being gathered.

Arg:: enum Conversions 2011-08-21

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%

New Baseline 2011-08-19

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.

Standardized Testing Data

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.