Skip to content

Task modification very slow when project feedback is involved #4135

Description

@ChargingBulle

Taskwarrior 3.x.x is significantly slower than 2.x.x after migration: basic commands take >1 second per task creating major annoyances for me who uses taskwarrior every day. Removing rows from tasks did reduce the command time to 1/400.
I also created an index on operations as it was the largest table but that results in no performance difference. Before the prune I had 7573 rows in tasks and I think that is not an unusually high amount of tasks.
Every operation takes approx 1 second per task and is significantly slower than in the 2.x.x version:

This is that it looks like to run modify on ten tasks at the same time:

Details

task 3.4.2 built for Linux

cbulle@debian-trixie:~$ time task 3 modify wait:mon
Modifying task 3 'hidden'.
Modified 1 task.
TASKDATA override: /tmp/.task.backup
Project 'finance' is 95% complete (6 of 125 tasks remaining).

real	0m1.086s
user	0m1.069s
sys	0m0.017s
cbulle@debian-trixie:~$ time yes | task 10-20 modify wait:mon | ts
2026-06-27 06:34:35 This command will alter 11 tasks.
2026-06-27 06:34:35   - Wait will be changed from '9999-12-30' to '2026-06-29'.
2026-06-27 06:34:36 Modify task 10 'hidden'? (yes/no/all/quit) Modifying task 10 'hidden'.
2026-06-27 06:34:36 
2026-06-27 06:34:36   - Wait will be changed from '2027-08-30' to '2026-06-29'.
2026-06-27 06:34:37 Modify task 11 'hidden'? (yes/no/all/quit) Modifying task 11 'hidden'.
2026-06-27 06:34:37 
2026-06-27 06:34:37   - Wait will be changed from '9999-12-30' to '2026-06-29'.
2026-06-27 06:34:38 Modify task 12 'hidden'? (yes/no/all/quit) Modifying task 12 'hidden'.
2026-06-27 06:34:38 
2026-06-27 06:34:38   - Wait will be changed from '9999-12-30' to '2026-06-29'.
2026-06-27 06:34:39 Modify task 13 'hidden'? (yes/no/all/quit) Modifying task 13 'hidden'.
2026-06-27 06:34:39 
2026-06-27 06:34:39   - Wait will be changed from '9999-12-30' to '2026-06-29'.
2026-06-27 06:34:40 Modify task 14 'hidden'? (yes/no/all/quit) Modifying task 14 'hidden'.
2026-06-27 06:34:40 
2026-06-27 06:34:40   - Wait will be changed from '2026-05-03' to '2026-06-29'.
2026-06-27 06:34:41 Modify task 15 'hidden'? (yes/no/all/quit) Modifying task 15 'hidden'.
2026-06-27 06:34:41 
2026-06-27 06:34:41   - Wait will be changed from '2026-10-01' to '2026-06-29'.
2026-06-27 06:34:43 Modify task 16 'hidden'? (yes/no/all/quit) Modifying task 16 'hidden'.
2026-06-27 06:34:43 This is a recurring task.  Do you want to modify all pending recurrences of this same task? (yes/no) 
2026-06-27 06:34:43   - Wait will be changed from '2026-06-28' to '2026-06-29'.
2026-06-27 06:34:44 Modify task 17 'hidden'? (yes/no/all/quit) Modifying task 17 'hidden'.
2026-06-27 06:34:44 
2026-06-27 06:34:44   - Wait will be changed from '2026-12-01' to '2026-06-29'.
2026-06-27 06:34:45 Modify task 18 'hidden'? (yes/no/all/quit) Modifying task 18 'hidden'.
2026-06-27 06:34:45 
2026-06-27 06:34:45   - Wait will be changed from '2026-03-05' to '2026-06-29'.
2026-06-27 06:34:45 Modify task 19 'hidden'? (yes/no/all/quit) Modifying task 19 'hidden'.
2026-06-27 06:34:45 
2026-06-27 06:34:45   - Wait will be changed from '2026-06-28' to '2026-06-29'.
TASKDATA override: /tmp/.task.backup
Warning: You have specified that the 'wait' date is after the 'due' date.
Project '40c3' is 0% complete (1 task remaining).
Project 'finance' is 95% complete (6 of 125 tasks remaining).
Project 'freunde' is 98% complete (2 of 105 tasks remaining).
Project 'haushalt' is 99% complete (2 of 650 tasks remaining).
Project 'health' is 99% complete (1 of 403 tasks remaining).
Project 'job' is 98% complete (1 of 59 tasks remaining).
Project 'partner' is 97% complete (5 of 219 tasks remaining).
Project 'sec' is 96% complete (1 of 32 tasks remaining).
Project 'self' is 99% complete (1 of 162 tasks remaining).
2026-06-27 06:34:46 Modify task 20 'hidden'? (yes/no/all/quit) Modifying task 20 'hidden'.
2026-06-27 06:34:46 Modified 11 tasks.

real	0m10.578s
user	0m10.555s
sys	0m0.053s

cbulle@debian-trixie:~$ time task stats
TASKDATA override: /tmp/.task.backup

Category                   Data         
Pending                    2
Waiting                    32
Recurring                  2
Completed                  5555
Deleted                    1982
Total                      7573
Annotations                7953
Unique tags                11
Projects                   232
Blocked tasks              0
Blocking tasks             0
Undo transactions          850
Sync backlog transactions  84285
Tasks tagged               31.6%
Oldest task                2019-02-24
Newest task                2026-06-26
Task used for              7.3y
Task added every           8h
Task completed every       11h
Task deleted every         1d
Average time pending       12d
Average desc length        47 characters


real	0m1.230s
user	0m1.194s
sys	0m0.036s

The v2 on the other hand was very snappy and quick given the (almost) same amount of items.
Taskwarrior v3 slower than v2 after upgrade / performance regression / migration to new version 3 causes slow operations / Performance issue post-migration slow per task / bulk commands extremely slow (but was slow in 2.x.x!) / ~1s delay for task commands / 3.0.0 new data format slowdown every task command is slower than before.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions