emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Switch org-agenda-get-* defuns to operate on date ranges
@ 2013-05-20 13:36 Jonas Hörsch
  2013-08-31  6:18 ` Carsten Dominik
  0 siblings, 1 reply; 2+ messages in thread
From: Jonas Hörsch @ 2013-05-20 13:36 UTC (permalink / raw)
  To: emacs-orgmode; +Cc: Florian Friesdorf

hello everyone,

i've just started to use calfw to get a nice calendar-like display of my
agenda. unfortunately i was slighly dismayed at the build-up speed
easily exceeding a few seconds on my not so packed schedule. profiling
into the code i found that the problem mainly is:

there exists only the possibility to retrieve agenda data for one day
day, org-agenda.el's org-agenda-get-day-entries, rather than for a range
of days. this makes it necessary to loop over --get-day-entries to collect
all entries to show in the monthly calendar.

--get-day-entries for its part has to parse (basically regex-search
through) the respective org agenda file completely on each invocation;
effectively done by org-agenda-get-{todos,blocks,sexps,...}.

i imagine it is quite feasible to implement
(defun org-agenda-get-entries (file beg end &rest args) ...)
to sift through FILE but once and return an alist like
((date . (entry1 entry2 ..)) ..)
containing all entries between dates BEG and END, inclusive.

neglecting the extra overhead for sorting entries into the alist, this
promises to speed up typical weekly agenda collection by a factor of 7
and calfw even by a factor of approx. 30, shouldn't it?

before i start a local branch to try myself on this refactoring work,
i'd welcome a few comments, why i should be likely to fail or succeed!

cheers,
jonas

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Switch org-agenda-get-* defuns to operate on date ranges
  2013-05-20 13:36 Switch org-agenda-get-* defuns to operate on date ranges Jonas Hörsch
@ 2013-08-31  6:18 ` Carsten Dominik
  0 siblings, 0 replies; 2+ messages in thread
From: Carsten Dominik @ 2013-08-31  6:18 UTC (permalink / raw)
  To: Jonas Hörsch; +Cc: emacs-orgmode, Florian Friesdorf

Hi Jörg,

I think it would be feasible to write such a modification.

- Carsten

On 20.5.2013, at 15:36, Jonas Hörsch <coroa@online.de> wrote:

> hello everyone,
> 
> i've just started to use calfw to get a nice calendar-like display of my
> agenda. unfortunately i was slighly dismayed at the build-up speed
> easily exceeding a few seconds on my not so packed schedule. profiling
> into the code i found that the problem mainly is:
> 
> there exists only the possibility to retrieve agenda data for one day
> day, org-agenda.el's org-agenda-get-day-entries, rather than for a range
> of days. this makes it necessary to loop over --get-day-entries to collect
> all entries to show in the monthly calendar.
> 
> --get-day-entries for its part has to parse (basically regex-search
> through) the respective org agenda file completely on each invocation;
> effectively done by org-agenda-get-{todos,blocks,sexps,...}.
> 
> i imagine it is quite feasible to implement
> (defun org-agenda-get-entries (file beg end &rest args) ...)
> to sift through FILE but once and return an alist like
> ((date . (entry1 entry2 ..)) ..)
> containing all entries between dates BEG and END, inclusive.
> 
> neglecting the extra overhead for sorting entries into the alist, this
> promises to speed up typical weekly agenda collection by a factor of 7
> and calfw even by a factor of approx. 30, shouldn't it?
> 
> before i start a local branch to try myself on this refactoring work,
> i'd welcome a few comments, why i should be likely to fail or succeed!
> 
> cheers,
> jonas
> 
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-08-31  6:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-05-20 13:36 Switch org-agenda-get-* defuns to operate on date ranges Jonas Hörsch
2013-08-31  6:18 ` Carsten Dominik

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).