[CalendarServer-dev] Does timezones have to be so slow?

Peter Mogensen apm at one.com
Thu Apr 22 07:09:59 PDT 2010


Cyrus Daboo wrote:
> Can you send the full request body for the calendar-query REPORTs that 
> you are using so I can take a look at this?

Sorry for forgetting to CC the list.
To sum up:

REPORT(calendar-query) requests with an empty <calendar-data/> element 
will read events directly from disk an be relatively fast.
If <calendar-data/> is non-empty, there will be instantiated 
python-vobject objects to handle the returned data. This will result in 
a VTIMEZONE (TimezoneComponent) object being created for each event and 
even though the tzinfo is cached, creating theses objects is pretty costly.
The constructor for vobject/icalendar.py TimezoneComponent will call
settzinfo(),getTransition(), and the localy defined test() which in turn 
calls tzinfo.dst() - where most of the request time is spent.

This should be possible to optimize since the resulting VTIMEZONEs are 
often the exact same for all VEVENTs.

Sending an empty caldendar-data in the request is much faster though.

Thanx to Cyrus.

/Peter


More information about the calendarserver-dev mailing list