emacs-orgmode
[Top][All Lists]
Advanced

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

[Orgmode] Re: orgmode and physical fitness training


From: Mikael Fornius
Subject: [Orgmode] Re: orgmode and physical fitness training
Date: Fri, 07 Nov 2008 18:54:04 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)

Thanks for org-collector.el, now I have read it and tried it out.

It is very nice to have the possibility to evaluate lisp expressions as
values, that is something missing in org-columns!

But it was only a few seconds faster than column-view and column dblock
and therefore not fast enough for my slow computer ;-). I timed it to 62
seconds to insert exercise data table for one year (83 headings) with 4
columns and no calculations.

* ELP Profiling Results 

|---------------------------+-------+--------------+--------------|
| org-dblock-write:propview |     1 |    62.158395 |    62.158395 |
| org-propview-collect      |     1 |    60.578724 |    60.578724 |
| org-map-entries           |     1 |    60.519551 |    60.519551 |
| org-scan-tags             |     1 |    60.267157 |    60.267157 |
| org-entry-properties      |    94 | 57.451918999 | 0.6111906276 |
| org-get-tags-at           |    94 | 54.069399999 | 0.5752063829 |
| org-up-heading-all        |   365 | 53.664638999 | 0.1470264082 |
| outline-up-heading        |   365 |    53.647627 |    0.1469798 |
| outline-previous-heading  | 29751 | 39.418412999 | 0.0013249441 |
| org-outline-level         | 30306 | 6.0971540000 | 0.0002011863 |
| org-split-string          |   555 | 2.0629750000 | 0.0037170720 |
|---------------------------+-------+--------------+--------------|

It is clear from above who is the time thief.

* Comment

It did not work at first because sometimes I have properties without
values, they then gets the empty string assigned, "".

I had to adjust function org-read-prop because in my emacs (GNU Emacs
23.0.60.5):

(stringp "")           -> t

and

(string-to-number "")  -> 0
(string-to-number "0") -> 0

and then at line 34 it tries to take substring out of "".

Attaches diff if interested :-)
*** /home/mfo/org/org-collector.el~     2008-11-07 17:19:12.000000000 +0100
--- /home/mfo/org/org-collector.el      2008-11-07 18:14:23.000000000 +0100
***************
*** 27,45 ****
  Otherwise if prop looks like a list (meaning it starts with a
  '(') then read it as lisp, otherwise return it unmodified as a
  string."
!   (if (stringp prop)
!       (if prop
!         (let ((out (string-to-number prop)))
!           (if (equal out 0)
!               (if (or (equal "(" (substring prop 0 1)) (equal "'" (substring 
prop 0 1)))
!                   (read prop)
!                   (if (string-match "^\\(+0\\|-0\\|0\\)$" prop)
!                       0
!                       (progn (set-text-properties 0 (length prop) nil prop)
!                              prop)))
!               out))
!         nil)
!       prop))
  
  (defun org-dblock-write:propview (params)
    "collect the column specification from the #+cols line
--- 27,43 ----
  Otherwise if prop looks like a list (meaning it starts with a
  '(') then read it as lisp, otherwise return it unmodified as a
  string."
!   (if (and (stringp prop) (not (equal prop "")))
!       (let ((out (string-to-number prop)))
!       (if (equal out 0)
!           (if (or (equal "(" (substring prop 0 1)) (equal "'" (substring prop 
0 1)))
!               (read prop)
!             (if (string-match "^\\(+0\\|-0\\|0\\)$" prop)
!                 0
!               (progn (set-text-properties 0 (length prop) nil prop)
!                      prop)))
!         out))
!     prop))
  
  (defun org-dblock-write:propview (params)
    "collect the column specification from the #+cols line
/Mikael Fornius

reply via email to

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