* Dramatic slowdown in org mode
@ 2012-12-18 21:05 Fraga, Eric
2012-12-18 21:47 ` Abdó Roig-Maranges
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Fraga, Eric @ 2012-12-18 21:05 UTC (permalink / raw)
To: emacs-orgmode@gnu.org
[-- Attachment #1: Type: text/plain, Size: 632 bytes --]
Hello,
sometime between last week and today, there has been a dramatic slowdown in the generation of an agenda view. Using elp to instrument the org package and then asking for the default agenda view (C-c a a), I get the attached results. The agenda view takes just under 2 seconds with org from commit 47ea1666 (12 December) and over 30 seconds with org from commit 76cf2538 (today, up to date). I have attached the two outputs from elp.
Unfortunately, I haven't had the chance to go through the changes over the past week to see if I could identify which one causes the dramatic change in performance.
Thanks,
eric
[-- Attachment #2: elp-47ea1666.txt --]
[-- Type: text/plain, Size: 10323 bytes --]
org-agenda 1 1.761614798 1.761614798
org-agenda-list 1 1.578568495 1.578568495
org-agenda-get-day-entries 14 1.2357858689 0.0882704192
org-agenda-get-scheduled 14 0.9519977079 0.0679998362
org-entry-get 589 0.4575541829 0.0007768322
org-get-property-block 589 0.4306466940 0.0007311488
org-back-to-heading 1962 0.3531446199 0.0001799921
org-get-todo-state 773 0.239770826 0.0003101821
org-agenda-prepare 1 0.213085072 0.213085072
org-agenda-prepare-buffers 1 0.209823313 0.209823313
org-agenda-get-restriction-and-command 1 0.1829714909 0.1829714909
org-agenda-skip 813 0.178216573 0.0002192085
org-agenda-get-deadlines 14 0.1516758889 0.0108339920
org-before-first-heading-p 589 0.1033582670 0.0001754809
org-agenda-skip-eval 1624 0.0946857890 5.830...e-05
org-refresh-category-properties 14 0.087657319 0.0062612370
org-get-tags-at 33 0.0726190890 0.0022005784
org-up-heading-safe 124 0.068383819 0.0005514824
org-end-of-subtree 83 0.0565531959 0.0006813638
org-agenda-get-sexps 14 0.0541387670 0.0038670547
org-agenda-get-timestamps 14 0.042689354 0.0030492395
org-time-string-to-absolute 758 0.0353096979 4.658...e-05
org-agenda-get-blocks 14 0.0323156729 0.0023082623
org-agenda-format-item 45 0.021494701 0.0004776600
org-get-effort 34 0.0134196910 0.0003946967
org-in-src-block-p 813 0.0134103450 1.649...e-05
org-outline-level 331 0.011762491 3.553...e-05
org-parse-time-string 836 0.0114203009 1.366...e-05
org-get-priority 31 0.011103502 0.0003581774
org-agenda-finalize-entries 1 0.007454607 0.007454607
org-agenda-finalize 1 0.006165148 0.006165148
org-at-date-range-p 36 0.00506606 0.0001407238
org-agenda-align-tags 1 0.005057498 0.005057498
org-backward-heading-same-level 2 0.003762298 0.001881149
org-agenda-highlight-todo 45 0.0033643649 7.476...e-05
org-fit-window-to-buffer 1 0.003328753 0.003328753
org-diary-sexp-entry 27 0.002785114 0.0001031523
org-agenda-files 3 0.002448539 0.0008161796
org-agenda-add-time-grid-maybe 1 0.002256168 0.002256168
org-closest-date 26 0.002233855 8.591...e-05
org-check-agenda-file 28 0.0020999359 7.499...e-05
org-get-agenda-file-buffer 28 0.001792991 6.403...e-05
org-entries-lessp 166 0.0017702189 1.066...e-05
org-agenda-mode 1 0.001742011 0.001742011
org-agenda-new-marker 64 0.001705999 2.665...e-05
org-trim 87 0.0016152749 1.856...e-05
org-find-base-buffer-visiting 28 0.001526418 5.451...e-05
org-time-string-to-time 52 0.0015211780 2.925...e-05
org-add-props 144 0.0012391679 8.605...e-06
org-agenda-todayp 29 0.001007214 3.473...e-05
org-get-wdays 191 0.0008571499 4.487...e-06
org-date-to-gregorian 52 0.0007984180 1.535...e-05
org-agenda-fix-displayed-tags 45 0.0007469390 1.659...e-05
org-today 30 0.0006703880 2.234...e-05
org-activate-plain-links 2 0.000643076 0.000321538
org-agenda-prepare-window 1 0.000535488 0.000535488
org-pop-to-buffer-same-window 1 0.000513117 0.000513117
org-get-time-of-day 27 0.00042504 1.574...e-05
org-remove-uninherited-tags 35 0.000369202 1.054...e-05
org-get-todo-face 31 0.0003230559 1.042...e-05
org-split-string 30 0.000320699 1.068...e-05
org-switch-to-buffer-other-window 1 0.000299228 0.000299228
org-get-category 34 0.0002459649 7.234...e-06
org-uniquify 6 0.0002425450 4.042...e-05
org-agenda-quit 1 0.000231966 0.000231966
org-agenda-Quit 1 0.000221555 0.000221555
org-downcase-keep-props 96 0.000211889 2.207...e-06
org-activate-bracket-links 2 0.000207097 0.0001035485
org-agenda-fontify-priorities 1 0.000128072 0.000128072
org-before-change-function 69 0.0001265470 1.834...e-06
org-float-time 64 0.0001251610 1.955...e-06
org-agenda-get-category-icon 45 0.0001002629 2.228...e-06
org-days-to-iso-week 3 9.8779e-05 3.292...e-05
org-at-heading-p 2 9.2248e-05 4.6124e-05
org-delete-all 35 7.658...e-05 2.188...e-06
org-reduced-level 33 7.462...e-05 2.261...e-06
org-compile-prefix-format 1 7.455e-05 7.455e-05
org-agenda-get-day-face 1 4.8089e-05 4.8089e-05
org-face-from-face-or-color 31 4.199...e-05 1.354...e-06
org-file-menu-entry 14 3.312...e-05 2.366...e-06
org-remove-flyspell-overlays-in 2 2.9368e-05 1.4684e-05
org-agenda-deadline-face 8 2.620...e-05 3.275...e-06
org-agenda-reset-markers 3 2.558...e-05 8.528...e-06
org-add-hook 3 1.9293e-05 6.431e-06
org-unhighlight 1 1.6632e-05 1.6632e-05
org-agenda-time-of-day-to-ampm-maybe 12 1.591...e-05 1.326...e-06
org-agenda-mark-header-line 1 1.4361e-05 1.4361e-05
org-contextualize-keys 1 1.3023e-05 1.3023e-05
org-get-at-bol 1 9.484e-06 9.484e-06
org-agenda-set-mode-name 1 6.471e-06 6.471e-06
org-agenda-span-name 1 5.258e-06 5.258e-06
org-add-prop-inherited 2 4.421...e-06 2.210...e-06
org-agenda-mark-clocking-task 1 3.879e-06 3.879e-06
org-region-active-p 1 3.785e-06 3.785e-06
org-agenda-ndays-to-span 2 2.913e-06 1.4565e-06
org-agenda-update-agenda-type 1 2.531e-06 2.531e-06
org-detach-overlay 1 2.501e-06 2.501e-06
org-agenda-fit-window-to-buffer 1 2.28e-06 2.28e-06
org-columns-remove-overlays 1 2.271e-06 2.271e-06
org-font-lock-add-tag-faces 1 2.05e-06 2.05e-06
org-set-sorting-strategy 1 1.85e-06 1.85e-06
org-agenda-use-sticky-p 1 1.709e-06 1.709e-06
org-agenda-span-to-ndays 1 1.609e-06 1.609e-06
[-- Attachment #3: elp-76cf2538.txt --]
[-- Type: text/plain, Size: 10425 bytes --]
org-agenda 1 30.228317001 30.228317001
org-agenda-list 1 30.008787535 30.008787535
org-agenda-get-day-entries 14 29.660869816 2.1186335583
org-agenda-skip 813 28.515058474 0.0350738726
org-in-src-block-p 813 28.441751922 0.0349837047
org-agenda-get-scheduled 14 20.508218072 1.4648727194
org-agenda-get-deadlines 14 6.731387816 0.4808134154
org-agenda-get-blocks 14 2.0721020529 0.1480072894
org-entry-get 589 0.4468897459 0.0007587262
org-get-property-block 589 0.421096625 0.0007149348
org-back-to-heading 1962 0.3602583869 0.0001836179
org-agenda-get-timestamps 14 0.262766359 0.0187690256
org-get-todo-state 773 0.2382924820 0.0003082697
org-agenda-get-restriction-and-command 1 0.219454936 0.219454936
org-agenda-prepare 1 0.213265379 0.213265379
org-agenda-prepare-buffers 1 0.209496288 0.209496288
org-time-string-to-absolute 758 0.1317035409 0.0001737513
org-before-first-heading-p 589 0.1023915890 0.0001738397
org-agenda-finalize-entries 1 0.101975926 0.101975926
org-agenda-highlight-todo 45 0.0979822400 0.0021773831
org-refresh-category-properties 14 0.0876999270 0.0062642805
org-agenda-get-sexps 14 0.0833151619 0.0059510829
org-get-tags-at 33 0.071930858 0.0021797229
org-up-heading-safe 124 0.0677388660 0.0005462811
org-end-of-subtree 83 0.0542820329 0.0006540003
org-agenda-format-item 45 0.0201687970 0.0004481954
org-agenda-quit 1 0.014157344 0.014157344
org-agenda-Quit 1 0.014141981 0.014141981
org-parse-time-string 836 0.0123557989 1.477...e-05
org-get-effort 34 0.0119257389 0.0003507570
org-get-priority 31 0.011187269 0.0003608796
org-outline-level 331 0.0110638410 3.342...e-05
org-agenda-finalize 1 0.006080879 0.006080879
org-agenda-align-tags 1 0.005008426 0.005008426
org-at-date-range-p 36 0.0049297940 0.0001369387
org-fit-window-to-buffer 1 0.004054615 0.004054615
org-backward-heading-same-level 2 0.00360709 0.001803545
org-diary-sexp-entry 27 0.002955527 0.0001094639
org-switch-to-buffer-other-window 1 0.002494355 0.002494355
org-agenda-files 3 0.0024815699 0.0008271899
org-agenda-add-time-grid-maybe 1 0.002327298 0.002327298
org-closest-date 26 0.002321751 8.929...e-05
org-check-agenda-file 28 0.002206258 7.879...e-05
org-agenda-skip-eval 1624 0.0021658900 1.333...e-06
org-get-agenda-file-buffer 28 0.0018778790 6.706...e-05
org-agenda-mode 1 0.001808435 0.001808435
org-agenda-new-marker 64 0.0017705319 2.766...e-05
org-entries-lessp 166 0.0017693260 1.065...e-05
org-time-string-to-time 52 0.0016844940 3.239...e-05
org-trim 87 0.001591569 1.829...e-05
org-find-base-buffer-visiting 28 0.001589439 5.676...e-05
org-add-props 144 0.0012833470 8.912...e-06
org-agenda-todayp 29 0.0010528069 3.630...e-05
org-get-wdays 191 0.0008695790 4.552...e-06
org-date-to-gregorian 52 0.0008140920 1.565...e-05
org-agenda-fix-displayed-tags 45 0.000784076 1.742...e-05
org-today 30 0.0007081949 2.360...e-05
org-activate-plain-links 2 0.0006233829 0.0003116914
org-get-time-of-day 27 0.0004254750 1.575...e-05
org-remove-uninherited-tags 35 0.000382968 1.094...e-05
org-defkey 38 0.0003686609 9.701...e-06
org-get-todo-face 31 0.000324218 1.045...e-05
org-split-string 30 0.000309698 1.032...e-05
org-uniquify 6 0.000244711 4.078...e-05
org-downcase-keep-props 96 0.0002143959 2.233...e-06
org-get-category 34 0.000201463 5.925...e-06
org-activate-bracket-links 2 0.000198061 9.90305e-05
org-before-change-function 69 0.0001326749 1.922...e-06
org-agenda-fontify-priorities 1 0.000129385 0.000129385
org-agenda-prepare-window 1 0.000125497 0.000125497
org-float-time 64 0.000122079 1.907...e-06
org-days-to-iso-week 3 0.000115953 3.8651e-05
org-pop-to-buffer-same-window 1 0.000104088 0.000104088
org-agenda-get-category-icon 45 9.505...e-05 2.112...e-06
org-at-heading-p 2 8.8614e-05 4.4307e-05
org-compile-prefix-format 1 7.9135e-05 7.9135e-05
org-delete-all 35 7.736...e-05 2.210...e-06
org-agenda-reset-markers 3 7.661...e-05 2.553...e-05
org-reduced-level 33 7.402e-05 2.243...e-06
org-agenda-get-day-face 1 4.7447e-05 4.7447e-05
org-key 38 4.4811e-05 1.179...e-06
org-face-from-face-or-color 31 4.3045e-05 1.388...e-06
org-file-menu-entry 14 3.2797e-05 2.342...e-06
org-remove-flyspell-overlays-in 2 2.7152e-05 1.3576e-05
org-agenda-deadline-face 8 2.556...e-05 3.196...e-06
org-unhighlight 1 2.1398e-05 2.1398e-05
org-agenda-time-of-day-to-ampm-maybe 12 1.6879e-05 1.406...e-06
org-add-hook 3 1.5579e-05 5.193e-06
org-agenda-mark-header-line 1 1.403e-05 1.403e-05
org-contextualize-keys 1 1.2491e-05 1.2491e-05
org-get-at-bol 1 8.842e-06 8.842e-06
org-agenda-set-mode-name 1 7.674e-06 7.674e-06
org-detach-overlay 1 7.007e-06 7.007e-06
org-agenda-span-name 1 5.038e-06 5.038e-06
org-add-prop-inherited 2 4.416e-06 2.208e-06
org-agenda-mark-clocking-task 1 4.025e-06 4.025e-06
org-region-active-p 1 3.443e-06 3.443e-06
org-agenda-ndays-to-span 2 2.947e-06 1.4735e-06
org-agenda-update-agenda-type 1 2.882e-06 2.882e-06
org-agenda-fit-window-to-buffer 1 2.195e-06 2.195e-06
org-font-lock-add-tag-faces 1 2.151e-06 2.151e-06
org-set-sorting-strategy 1 1.915e-06 1.915e-06
org-agenda-span-to-ndays 1 1.899e-06 1.899e-06
org-agenda-use-sticky-p 1 1.76e-06 1.76e-06
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Dramatic slowdown in org mode
2012-12-18 21:05 Dramatic slowdown in org mode Fraga, Eric
@ 2012-12-18 21:47 ` Abdó Roig-Maranges
2012-12-18 23:26 ` Bastien
2012-12-18 21:53 ` Bastien
2012-12-18 23:26 ` Bastien
2 siblings, 1 reply; 9+ messages in thread
From: Abdó Roig-Maranges @ 2012-12-18 21:47 UTC (permalink / raw)
To: Fraga, Eric; +Cc: emacs-orgmode@gnu.org
Hi
> sometime between last week and today, there has been a dramatic
> slowdown in the generation of an agenda view.
I tracked it back to commit a7afe7d, but haven't had the time to
investigate it further. On my case the slowdown is not as dramatic as
Eric's, though.
Abdo.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Dramatic slowdown in org mode
2012-12-18 21:47 ` Abdó Roig-Maranges
@ 2012-12-18 23:26 ` Bastien
0 siblings, 0 replies; 9+ messages in thread
From: Bastien @ 2012-12-18 23:26 UTC (permalink / raw)
To: Abdó Roig-Maranges; +Cc: emacs-orgmode@gnu.org
Hi Abdó,
Abdó Roig-Maranges <abdo.roig@gmail.com> writes:
> I tracked it back to commit a7afe7d, but haven't had the time to
> investigate it further. On my case the slowdown is not as dramatic as
> Eric's, though.
Thanks for the investigation.
The problem was that org-agenda-skip, which is called many times
during agenda generation, checks whether the point is in a code
source block. The new org-in-src-block-p distinguish whether
we are really within or "at" (which includes the #+begin_src
and #+end_src lines). org-agenda-skip just needs to check
if we are _within_. I fixed this.
--
Bastien
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Dramatic slowdown in org mode
2012-12-18 21:05 Dramatic slowdown in org mode Fraga, Eric
2012-12-18 21:47 ` Abdó Roig-Maranges
@ 2012-12-18 21:53 ` Bastien
2012-12-18 22:52 ` Abdó Roig-Maranges
2012-12-18 22:54 ` Nick Dokos
2012-12-18 23:26 ` Bastien
2 siblings, 2 replies; 9+ messages in thread
From: Bastien @ 2012-12-18 21:53 UTC (permalink / raw)
To: Fraga, Eric; +Cc: emacs-orgmode@gnu.org
Hi Eric,
"Fraga, Eric" <e.fraga@ucl.ac.uk> writes:
> Unfortunately, I haven't had the chance to go through the changes over the
> past week to see if I could identify which one causes the dramatic change
> in performance.
My guess is commit 980e522 -- can you confirm this?
--
Bastien
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Dramatic slowdown in org mode
2012-12-18 21:53 ` Bastien
@ 2012-12-18 22:52 ` Abdó Roig-Maranges
2012-12-18 22:54 ` Nick Dokos
1 sibling, 0 replies; 9+ messages in thread
From: Abdó Roig-Maranges @ 2012-12-18 22:52 UTC (permalink / raw)
To: Bastien; +Cc: emacs-orgmode@gnu.org
Hi,
> My guess is commit 980e522 -- can you confirm this?
I don't think it is 980e522. Here are my timings
a7afe7d: 10.6 s
c4bf1ee: 3.86 s
980e522: 3.8 s
08e4111: 3.88 s
that point to a7afe7d. It reads the files all right in about 4s, and on
the extra 6 seconds it just keeps thinking hard, until it displays the agenda.
Abdo.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Dramatic slowdown in org mode
2012-12-18 21:53 ` Bastien
2012-12-18 22:52 ` Abdó Roig-Maranges
@ 2012-12-18 22:54 ` Nick Dokos
1 sibling, 0 replies; 9+ messages in thread
From: Nick Dokos @ 2012-12-18 22:54 UTC (permalink / raw)
To: Bastien; +Cc: emacs-orgmode@gnu.org
Bastien <bzg@altern.org> wrote:
> Hi Eric,
>
> "Fraga, Eric" <e.fraga@ucl.ac.uk> writes:
>
> > Unfortunately, I haven't had the chance to go through the changes over the
> > past week to see if I could identify which one causes the dramatic change
> > in performance.
>
> My guess is commit 980e522 -- can you confirm this?
>
I doubt it - this commit is not in the range that Eric identified (indirectly
in the filenames, so I'm guessing):
,----
| $ git log --oneline 47ea1666..76cf2538
| 76cf253 Merge branch 'maint'
| 7739e8b Small refactoring
| 0f3264f org-agenda.el: Use `org-todo-keyword-faces' to highlight selected TODO keywords.
| 0db5f28 org-html.el and org-e-html.el: Add CSS classes to list tags.
| bbb451a Merge branch 'maint'
| 374efdd org.el (org-in-fixed-width-region-p): Rewrite using org-element.el.
| 4996e5b Merge branch 'maint'
| 9d4dd69 org.el (org-fill-paragraph): Fill correctly in source code block.
| 1af0b39 Allow C-S-<up/down> to sync update clock timestamps by several units.
| 709bf92 Backwards compatibility for `user-error´
| 676180a org-e-texinfo.el: Fix link export to account for alternate TOC names
| 83b5679 org-export: Fix docstring
| 442b2ad Merge branch 'maint'
| 20839ce org-element: Fix parsing of a list in a block in a list
| 4588244 Revert "tangled files should not be writable"
| 457c27d org-e-confluence: Add asynchronous export support
| fa0e8fe org-test.el (org-test-with-temp-text-in-file): Wrap ,@body into (progn ...).
| c8452bf Merge branch 'maint'
| c0675b4 test-org-src.el: Fix a test.
| 8f3b8ee testing/org-test.el: Fix `org-test-with-temp-text'.
| e77f26e contrib/lisp/org-e-confluence.el: New file by Sébastien Delafond
| 20940bb contrib/lisp/org-bullets.el: New file by Evgeni Sabof
| db5881f Merge branch 'master' of orgmode.org:org-mode
| beea46f Merge branch 'maint'
| 0b44eb6 Add doclicense.texi to include the GNU FDL license and fix the copyright notice.
| e556812 org-export: Fix docstring
| 68d4de2 org-koma-letter: Add asynchronous export support
| a223d1a * contrib/lisp/org-e-texinfo.el: Remove messages used for debugging (org-e-texinfo--generate-menu-items): Remove messages used for debugging.
| 2dbd84e Merge branch 'maint'
| 6f5b4a8 orgguide.texi: Fix the copyright notice.
| 6af6e95 Merge branch 'maint'
| cd24962 org.texi: Update copyright notice.
| db51b80 Merge branch 'maint'
| df09917 org.el (org-edit-special): Fix bug about editing special environments.
| 81d5ebc org-src.el (org-edit-src-code): Check if we are in a source code block with `org-in-src-block-p'.
| a7afe7d org.el (org-in-src-block-p): Return t when on #+BEGIN|END_SRC lines.
| b866204 Merge branch 'maint'
| c4bf1ee Remove gplmanual.pl as we are not allowed to dual-license the Org manual.
| 6202df5 Merge branch 'master' of orgmode.org:org-mode
| 2c164be Merge branch 'maint'
| 4524a02 Edit source: fix 'end' initialisation
| 22e4a4e Revert "org-src.el (org-edit-src-code): Fix bug on Emacs <24.1."
| 286fd7f org-e-beamer/html: Asynchronous export ignores `org-export-show-temporary-export-buffer'
| 26d2490 Merge branch 'maint'
| 0584dff ob-exp.el (obe-marker): Delete useless var.
| ac1b117 Merge branch 'maint'
| 70b0f42 Fix copyright notices for test files.
| a0cb4a3 add tests for org-src-edit
| f72bb57 Merge branch 'master' of orgmode.org:org-mode
| 22ee29b Merge branch 'maint'
| 7a770c1 org-src.el (org-edit-src-code): Fix bug on Emacs <24.1.
| 06872a4 export back-ends: Activate asynchronous export
| 5319cec org-e-publish: Activate asynchronous publishing
| ffb630b org-export: Add asynchronous process wrapper for export
| 5c1eab5 * contrib/lisp/org-e-texinfo.el: Provided export of info: links
| 31d24aa Merge branch 'maint'
| 82db0aa org.texi: Fix typos.
| 8c04fb7 org-exp.el (org-export-copy-to-kill-ring): Add a new choice 'if-interactive and use it as the default.
| 627d573 org-e-html: Small refactoring
| 2c39a4a export back-ends: Apply line break changes
| 6e37a4d org-element: Fix line break parsing
| 8dd3fa3 Use the org-mime-default-header customized variable
| 2c34715 option to byte-compile elisp loaded from Org files
| 5e3b825 tangled files should not be writable
| ff00818 requiring ob now pulls in all of Babel
| 0694965 renaming lisp/ob.el to lisp/ob-core.el
| ba59eeb ob-python: specify defcustom parameters
| 01bf706 org-babel: fix bug introduced in commit 78cdf149
| cf9838f org.el: Display the blocking heading when a TODO state change is blocked.
| 1bfea39 Support `C-1' prefix for `org-agenda-capture' and `org-capture'.
| 275f07c Merge branch 'maint'
| 488eea6 org-latex.el: Escape raw path when exporting links to files.
`----
a7afe7d was my initial guess because of the profiles:
org-in-src-block-p 813 0.0134103450 1.649...e-05
org-in-src-block-p 813 28.441751922 0.0349837047
That's a whopping difference for such a simple function.
Abdo Roig-Maranges apparently did a bisect and came to the same conclusion.
A simple profiling exercise with the two versions of the function indicates a big difference but
as Abdo indicated as well, not as big as Eric finds:
--8<---------------cut here---------------start------------->8---
(defun org-in-src-block1-p (&optional inside)
"Whether point is in a code source block.
When INSIDE is non-nil, don't consider we are within a src block
when point is at #+BEGIN_SRC or #+END_SRC."
(let (ov)
(or (when (setq ov (overlays-at (point)))
(memq 'org-block-background
(overlay-properties
(car ov))))
(and (not inside)
(save-match-data
(save-excursion
(move-beginning-of-line 1)
(looking-at ".*#\\+\\(BEGIN\\|END\\)_SRC")))))))
(defun org-in-src-block2-p ()
"Whether point is in a code source block."
(let (ov)
(when (setq ov (overlays-at (point)))
(memq 'org-block-background
(overlay-properties
(car ov))))))
(defun my-test1 ()
(let ((n 1000))
(while (> n 0)
(org-in-src-block1-p)
(setq n (1- n)))))
(defun my-test2 ()
(let ((n 1000))
(while (> n 0)
(org-in-src-block2-p)
(setq n (1- n)))))
--8<---------------cut here---------------end--------------->8---
When executed on a begin_src line, my-test1 is 5x as slow as my-test2
in my setup. Otherwise the factor is about 2.
But Eric gets a factor of 2500 which is a bit of a mystery to me.
There might be additional factors entering in his case.
It's clear however that the regexp slows things down substantially.
BTW, do we really need the regexp to match anything before the
#+BEGIN_SRC, or just white space? If the latter is ok, it should speed
up the regexp matching.
Nick
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Dramatic slowdown in org mode
2012-12-18 21:05 Dramatic slowdown in org mode Fraga, Eric
2012-12-18 21:47 ` Abdó Roig-Maranges
2012-12-18 21:53 ` Bastien
@ 2012-12-18 23:26 ` Bastien
2012-12-19 6:25 ` Fraga, Eric
2 siblings, 1 reply; 9+ messages in thread
From: Bastien @ 2012-12-18 23:26 UTC (permalink / raw)
To: Fraga, Eric; +Cc: emacs-orgmode@gnu.org
Hi Eric,
"Fraga, Eric" <e.fraga@ucl.ac.uk> writes:
> sometime between last week and today, there has been a dramatic slowdown in
> the generation of an agenda view. Using elp to instrument the org package
> and then asking for the default agenda view (C-c a a), I get the attached
> results. The agenda view takes just under 2 seconds with org from commit
> 47ea1666 (12 December) and over 30 seconds with org from commit 76cf2538
> (today, up to date). I have attached the two outputs from elp.
This should be fixed -- let me know if the problem persists.
Thanks,
--
Bastien
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Dramatic slowdown in org mode
2012-12-18 23:26 ` Bastien
@ 2012-12-19 6:25 ` Fraga, Eric
2012-12-19 9:42 ` Bastien
0 siblings, 1 reply; 9+ messages in thread
From: Fraga, Eric @ 2012-12-19 6:25 UTC (permalink / raw)
To: Bastien; +Cc: emacs-orgmode@gnu.org
> From: Bastien Guerry [bastienguerry@gmail.com] on behalf of Bastien [bzg@altern.org]
> "Fraga, Eric" <e.fraga@ucl.ac.uk> writes:
>
> > sometime between last week and today, there has been a dramatic slowdown in
> > the generation of an agenda view. Using elp to instrument the org package
> > and then asking for the default agenda view (C-c a a), I get the attached
> > results. The agenda view takes just under 2 seconds with org from commit
> > 47ea1666 (12 December) and over 30 seconds with org from commit 76cf2538
> > (today, up to date). I have attached the two outputs from elp.
>
> This should be fixed -- let me know if the problem persists.
Bastien,
this has definitely been fixed! Thank you very much.
And thanks to everybody else that investigated while I slept ;-) I am completely jet-lagged (after 30+ hour trip from Oz to UK)...
eric
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2012-12-19 9:42 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-18 21:05 Dramatic slowdown in org mode Fraga, Eric
2012-12-18 21:47 ` Abdó Roig-Maranges
2012-12-18 23:26 ` Bastien
2012-12-18 21:53 ` Bastien
2012-12-18 22:52 ` Abdó Roig-Maranges
2012-12-18 22:54 ` Nick Dokos
2012-12-18 23:26 ` Bastien
2012-12-19 6:25 ` Fraga, Eric
2012-12-19 9:42 ` Bastien
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).