With a big dataset, switching between tags in workview (actionable) mode is slower than it used to be in 0.3.x #402
Labels
bug
needinfo
We need more info to solve the issue, or we can't fix it.
patch-or-wont-happen
Core maintainers would like this, but lack time/energy. Contribute a patch or it won't happen.
performance
Issues affecting the speed and responsiveness of the application
priority:high
reproducible-in-git
Issues that affect the current dev version
Milestone
It is a long-standing fact that GTG has always been rather slow when displaying large amounts of tasks, particularly when you have multiple hundreds of them and you are clicking "All tasks" (instead of a specific tag) when not in the "Actionable" view mode (a.k.a. workview).
Up until GTG 0.3.1, this was very painful for startup times (and for exiting the workview). This is issue #109.
However, with GTG 0.4 / git, the performance behavior pattern is different from 0.3.x:
So, from a user's perspective, you lose something and you gain something. The performance problem kinda swapped around between 0.3.1 and 0.4: switching tags was fast and is now slow, switching view modes was slow and is now fast.
You can use
./launch.sh -s bryce
to use the heavy (~1MB) "bryce" dataset for testing performance issues more easily.While the port to LXML might fix the symptoms of issue #109 and of this new ticket here, I think it's important to report that there is some sort of underlying performance issue before the problem gets "hidden under the carpet" by LXML's superior performance:
Running sysprof while switching between tags, it seems as if this is not necessarily a disk I/O bound problem (although that graph has some "writes" spikes on my SSD, it doesn't seem like it's filling the graph with that, so at least we're probably not reading/writing to the disk all the time...), but rather a CPU-bound issue (note that the graph doesn't use all my cores/threads, the low CPU usage is certainly because it's single-threaded), suggesting that GTG recalculates everything everytime.
Switching between tags a couple of times, it "hits" a bunch of calls a total of... over 73 thousand times? I don't actually know how to interpret the functions/callers/descendants views in Sysprof...
The text was updated successfully, but these errors were encountered: