emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] Painfully Slow Export


From: Ken Mankoff
Subject: Re: [O] Painfully Slow Export
Date: Tue, 12 Jun 2018 23:30:38 +0200

As an MWE, I can test with "emacs -Q" and the following org file:








#+PROPERTY: header-args :eval never-export
# (setq org-export-use-babel t)

#+BEGIN_SRC emacs-lisp :results none
(org-babel-do-load-languages
 'org-babel-load-languages
 '((shell . t)))
#+END_SRC

#+BEGIN_SRC sh :results org raw
for i in $(seq 200); do
echo ""
echo "#+BEGIN_SRC sh :results output :exports results"
echo "echo 'hello, world'"
echo "#+END_SRC"
echo "#+RESULTS:"
echo ": goodbye"
done
#+END_SRC
#+RESULTS:



Execute the first code block to allow execution of the second. Execute the second code block to generate 200 more. Export. It takes ~6 seconds on my machine, which seems long but is bearable. Based on the profiling, I think the reason it takes 1 minute is because the code blocks use <<noweb>> blocks?. I can verify this with the following MWE:


#+PROPERTY: header-args :eval never-export
# (setq org-export-use-babel t)

#+NAME: foo
#+BEGIN_SRC sh :results verbatim
ls
#+END_SRC
#+RESULTS:

#+NAME: bar
#+BEGIN_SRC sh :results verbatim :noweb yes
<<foo>>
#+END_SRC
#+RESULTS:

#+NAME: baz
#+BEGIN_SRC sh :results verbatim :noweb yes
<<bar>>
#+END_SRC
#+RESULTS:

Repeat the BAZ block with the <<bar>> about 100 times and export this, and it takes a long time. I killed it after ~30 seconds, because I think I have my evidence that :noweb yes is the culprit for the slow export.



On Tue, Jun 12, 2018 at 11:15 PM Ken Mankoff <address@hidden> wrote:

On Tue, Jun 12, 2018 at 11:07 PM Berry, Charles <address@hidden> wrote:

> On Jun 12, 2018, at 12:41 PM, Ken Mankoff <address@hidden> wrote:
>
> Hi Chuck,
>
> It looks fine to me. I see:
>
> Name: fig:foo
> Lang: python
> Properties:
>       :header-args    :eval never-export
>       :header-args:python     nil
> Header Arguments:
>       :cache          no
>       :eval           never-export
>       :exports        results
>       :hlines         no
>       :noweb          yes
>       :results        file replace
>       :session        discharge_ts
>       :tangle         no
>


And still the src blocks execute?


No. The source blocks never execute. It just takes an entire minute to export the file with 200 source blocks. If they executed it would probably take a few hours.

   -k. 

reply via email to

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