kdheepak / taskwarrior-tui

`taskwarrior-tui`: A terminal user interface for taskwarrior
https://kdheepak.com/taskwarrior-tui
MIT License
1.48k stars 68 forks source link

Commonly known performance gotchas? #581

Open ThomasGHenry opened 4 months ago

ThomasGHenry commented 4 months ago

Hiya!

Thanks for this! In my first 3~4 days of using it, I was FLYING. It was awesome. Now I'm about 700 tasks in on day 10 or so, and it's unusably slow, even to the point of impacting the rest of my system (MacOS - Sonoma 14.4.1). I just open it and have to kill it. Fan turns on system gets hot, all that good stuff.

Has anyone seen this? Where should I look first? Also, task and tasksh and other taskwarrior tools work fine.

I don't think it's a memory leak. I think it's working hard at something. I do have a hook on modify. Is there some automatic modification is does to all the tasks on coming up? I just thought of that, so I'll disable the hook and report back while I await your suggestions.

Thanks!

kdheepak commented 4 months ago

Can you update the tick rate? This is the default:

uda.taskwarrior-tui.tick-rate=250

The number is in milliseconds, so increasing it to 1000 or 4000 should only cause updates once every 1 or 4 seconds.

I'd also look at the debug log output. Set the following environment variable:

export TASKWARRIOR_TUI_LOG_LEVEL=debug

And then check for a log file in the XDG data folder: https://docs.rs/directories/5.0.1/directories/struct.ProjectDirs.html#method.data_dir

That should give you some insight into what is going on.

kdheepak commented 4 months ago

Possibly related to https://github.com/kdheepak/taskwarrior-tui/issues/545

RedEtherbloom commented 4 months ago

Have you modified 'task-detail-prefetch' in taskrc? Does the lag improve if you close the detail panel, after the startup finished? (The update_task_details method is a big performance bottleneck which I'm rewriting. It was a bottleneck on my X230 during startup and resulted in similar syptoms).

Have you modified any other any other settings?

To my understanding taskwarrior-tui does not modify tasks on startup. Taskchampion(taskwarriors backend) modifies it's urgency value on certain read operations, many of which are run during startup though. I'm not sure if this would trigger the on-modify hook though, the comment in the placeholder file would suggest no.

The on-modify event is triggered separately for each task modified. This hook script can accept/reject the modification. Processing will continue.

ThomasGHenry commented 4 months ago

I set these and we're cruisin' again. Thanks, all!

uda.taskwarrior-tui.tick-rate=4000
uda.taskwarrior-tui.task-detail-prefetch=false

By the way, it's probably not my hook because the hook logs and it's not logging.

pchr8 commented 3 weeks ago

+1 data point on the issue: I have 6k tasks in taskwarrior (though only <70 pending ones), and taskwarrior-tui was unusable with updates happening every 4+ seconds or so

Using the lines pasted above by @ThomasGHenry solved this! I can finally try taskwarrior-tui out :)

RedEtherbloom commented 3 weeks ago

So I'm suspecting it may actually be the prefetch that is making taskwarrior-tui lag, as I have similar experiences with ~400 tasks. I'll try to find the energy to finish my fix, can't guarantee when it will drop due to depression.