emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] [RFC] Rewrite `org-entry-properties' using parser


From: Thorsten Jolitz
Subject: Re: [O] [RFC] Rewrite `org-entry-properties' using parser
Date: Fri, 01 Aug 2014 14:44:22 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

Bastien <address@hidden> writes:

Hi Bastien,

> Thorsten Jolitz <address@hidden> writes:
>
>> here is my first take of rewriting `org-entry-properties'.
>
> I didn't take the time to closely look at the change, but thanks
> for working on this.
>
> My main concern with anything that touches `org-entry-properties'
> is whether agenda generation is affected in terms of performances.
> Any change here needs to check this very carefully, because we
> cannot affort to exchange speed against clarity (sadly enough.)

I would guess it all depends on the speed of `org-element-at-point'
then. I can test this with very big org files later, but first I would
it to converge a bit towards a possibly acceptable version. 

E.g. when looking at the ERT tests it seems ugly and not helpfull that
values of properties like 'deadline' are returned in parse-tree format,
they should be interpreted first (but thats another function-call
affecting speed?).

Furthermore, to achieve real claritiy, the classification of properties
in Org-mode should be checked again for completeness and
consistency. E.g. the 'ID' property set by 'org-id' does not appear in
any 'org--properties' variable and thus would falsely be treated as
user/application property. Properties in 'org-special-properties' are
upcase and don't always match the names of the (downcase) properties set
by the parser. There is no variable for the class of properties that
really only serve the parser/export framework (:beg, :end, :content-beg:
etc.).


> If you can explore this, that'd be great.

As a little test I switched Agenda from day to year mode with
(uncompiled) old and new version. I checked with 

#+begin_src emacs-lisp
(symbol-file 'org-entry-properties)
#+end_src

that uncompiled versions are used, and with 

,----
| C-h f org-entry-properties
`----

which version is loaded. The results are *suspiciously* similar, but the
checks indicated the new version was loaded during second test.

* test-call (in agenda day-view)

#+begin_src emacs-lisp
(benchmark-run nil (org-agenda-change-time-span 'year))
#+end_src

** old (uncompiled)

(54.418716989 94 12.718539017000012)

** new (uncompiled)

(53.862527422 82 12.037524198)

-- 
cheers,
Thorsten




reply via email to

[Prev in Thread] Current Thread [Next in Thread]