pimutils / khal

:calendar: CLI calendar application
https://lostpackets.de/khal/
MIT License
2.62k stars 207 forks source link

ikhal is really slow #813

Open grsubramanian opened 6 years ago

grsubramanian commented 6 years ago

Generally speaking, the concept behind khal is awesome. I got it to work fine with my google calendar. That calendar has only few items, and ikhal's navigation is seamless.

However, I am also trying to use this for my office calendar at work, where I have tons of meeting events (total ~300 ics files, totaling ~5MB in vdir). In this setup, the same ikhal installation is very slow (~5 seconds) both to startup and to navigate in the calendar view (hangs a lot).

I am using a MacOSX (Darwin Kernel Version 16.7.0), Python 3.7.0, khal 0.9.9 based on pip3 install (global installation without virtualenv).

I tried the simple non-pkg_resources variant

#!/usr/bin/env python3

from khal.cli import main_khal

main_khal()

but that did not change anything noticeable.

I profiled khal with the default invocation and got khal.profile.tar.gz based on python3 cProfile which I cannot fully understand since I don't know all the function names. But it seems like a lot of time is being spent in parser.py. Pardon me if I am mistaken.

Could you please help me out.

geier commented 5 years ago

You are right, khal takes a ridiculous amount of time there and yes, most of it is spent on parsing some icalendar files. How many events does khal show on the default run? Something in the order of ~100 entries shouldn't really be a problem. I suspect something is either wrong with your icalendar installation or you have some weird .ics files.

Which version of icalendar do you have installed (pip freeze)?

laur89 commented 5 years ago

On my system, khal executes in ~ 1.1sec with

timedelta = 1d

and ~1.5sec with

timedelta = 4d

Now, ikhal takes roughly same amount as for OP (~5s); to me it's clear that ics parsing is an obvious candidate. Could it be done lazily to improve the responsiveness of the program?