From: Eric Schulte <schulte.eric@gmail.com>
To: Andreas Leha <andreas.leha@med.uni-goettingen.de>
Cc: emacs-orgmode@gnu.org
Subject: Re: Bug? R: Org babel block execution *drastically* slower than in ESS session directly
Date: Sat, 17 Nov 2012 17:57:54 -0700 [thread overview]
Message-ID: <873907afsd.fsf@gmail.com> (raw)
In-Reply-To: <87y5hzg2te.fsf@gmail.com> (Aaron Ecay's message of "Sat, 17 Nov 2012 19:41:33 -0500")
Aaron Ecay <aaronecay@gmail.com> writes:
> 2012ko azaroak 16an, Eric Schulte-ek idatzi zuen:
>
>>
>> The attached patch adds a "really-silent" results header argument. To
>> see the impact compare the running time of the following two code
>> blocks.
>
> Unfortunately, the attached patch doesn’t work correctly. This can be
> seen by replacing the “seq” command in your examples with a command that
> has side effects – notify-send, aplay, etc. In the :results none” case,
> the command is not run at all.
>
> That’s because the “(funcall cmd body params)” call at l. 574 of ob.el
> (patched version) has been put in a branch that is only run if :results
> != none. That funcall is responsible for actually evaluating the code
> block.
>
Oh!, thanks for catching this, I just pushed up a fix.
>
> (The indentation of the patch as applied isn’t correct – the two
> branches of the if on l. 565 are indented at the same depth as each
> other, and as the if. So it’s possible that the problem is due to a
> paren in the wrong place. But I cannot see a way to make this approach
> work.)
>
Yes, sometimes I find this approach to be preferable to make the diffs
more readable and to avoid over-indentation in very large functions.
>
> The code generating the slowdown is in backend-specific files. So, for
> example, a new branch needs to be added to the case statements in
> org-babel-R-evaluate(-session), to detect the :results none case and not
> read the result. I suspect that each backend will need this treatment
> (unless some of them share code).
>
> In the meantime, attached to this email is a patch that implements a
> size check on reading results. If the results file is over 10kb, it
> asks the user whether to proceed. You can test this by evaluating:
>
> #+begin_src sh :results silent
> seq 10000
> #+end_src
>
> 10kb of results actually doesn’t result in a very serious hang (~5sec on
> my system). But I chose the value as more of a sanity check – odds are
> (?) that very few people want to see 10k of results in the (mini)buffer.
> The value could be made customizable.
>
> I also chose the polarity of the y-or-n-p so that picking the default
> (yes) option does the sensible thing of not hanging emacs, although it
> thus does discard data. I’m not sure which is the worse problem.
>
I may be outvoted, but I find this approach too be overly complicated.
Also, size may frequently not be the best proxy for the time which Emacs
will take to ingest the results.
Best,
>
> From 1053f3acfc21f24fc994ae85adff6779838b0ce7 Mon Sep 17 00:00:00 2001
> From: Aaron Ecay <aaronecay@gmail.com>
> Date: Sat, 17 Nov 2012 19:26:43 -0500
> Subject: [PATCH] lisp/ob.el: add a size check to
> `org-babel-import-elisp-from-file'
>
> Reading large results can cause emacs to hang for a long time. Ask the
> user whether to proceed in such cases.
>
> Signed-off-by: Aaron Ecay <aaronecay@gmail.com>
> ---
> lisp/ob.el | 42 ++++++++++++++++++++++++------------------
> 1 file changed, 24 insertions(+), 18 deletions(-)
>
> diff --git a/lisp/ob.el b/lisp/ob.el
> index bf4b455..b2385e9 100644
> --- a/lisp/ob.el
> +++ b/lisp/ob.el
> @@ -2462,24 +2462,30 @@ appropriate."
> (defun org-babel-import-elisp-from-file (file-name &optional separator)
> "Read the results located at FILE-NAME into an elisp table.
> If the table is trivial, then return it as a scalar."
> - (let (result)
> - (save-window-excursion
> - (with-temp-buffer
> - (condition-case err
> - (progn
> - (org-table-import file-name separator)
> - (delete-file file-name)
> - (setq result (mapcar (lambda (row)
> - (mapcar #'org-babel-string-read row))
> - (org-table-to-lisp))))
> - (error (message "Error reading results: %s" err) nil)))
> - (if (null (cdr result)) ;; if result is trivial vector, then scalarize it
> - (if (consp (car result))
> - (if (null (cdr (car result)))
> - (caar result)
> - result)
> - (car result))
> - result))))
> + (let* ((file-size (nth 7 (file-attributes file-name)))
> + (can-load (or (< file-size (* 10 1024)) ; 10kb
> + (not (y-or-n-p (concat "Displaying the block's large "
> + "results may hang emacs; skip "
> + "reading them?"))))))
> + (when can-load
> + (let (result)
> + (save-window-excursion
> + (with-temp-buffer
> + (condition-case err
> + (progn
> + (org-table-import file-name separator)
> + (delete-file file-name)
> + (setq result (mapcar (lambda (row)
> + (mapcar #'org-babel-string-read row))
> + (org-table-to-lisp))))
> + (error (message "Error reading results: %s" err) nil)))
> + (if (null (cdr result)) ;; if result is trivial vector, then scalarize it
> + (if (consp (car result))
> + (if (null (cdr (car result)))
> + (caar result)
> + result)
> + (car result))
> + result))))))
>
> (defun org-babel-string-read (cell)
> "Strip nested \"s from around strings."
> --
> 1.8.0
--
Eric Schulte
http://cs.unm.edu/~eschulte
next prev parent reply other threads:[~2012-11-18 0:57 UTC|newest]
Thread overview: 217+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-31 6:12 Bug? R: Org babel block execution *drastically* slower than in ESS session directly John Hendy
2012-10-31 16:41 ` cberry
2012-10-31 17:18 ` John Hendy
2012-10-31 20:12 ` cberry
2012-10-31 20:23 ` John Hendy
2012-10-31 20:56 ` Thomas S. Dye
2012-10-31 23:00 ` Nick Dokos
2012-10-31 22:53 ` Nick Dokos
2012-11-01 14:53 ` John Hendy
2012-11-01 15:38 ` Nick Dokos
2012-11-01 18:17 ` John Hendy
2012-11-01 18:18 ` John Hendy
2012-11-01 18:48 ` Nick Dokos
2012-11-14 3:27 ` Aaron Ecay
2012-11-14 4:52 ` John Hendy
2012-11-14 6:32 ` Aaron Ecay
2012-11-14 8:28 ` Thomas S. Dye
2012-11-14 8:35 ` Andreas Leha
2012-11-16 15:45 ` Eric Schulte
2012-11-16 17:47 ` Andreas Leha
2012-11-16 19:00 ` John Hendy
2012-11-16 20:25 ` Achim Gratz
2012-11-17 17:12 ` Eric Schulte
2012-11-18 0:41 ` Aaron Ecay
2012-11-18 0:57 ` Eric Schulte [this message]
2012-11-18 1:41 ` Aaron Ecay
2012-11-19 1:18 ` Eric Schulte
2012-11-19 5:11 ` Eric Schulte
-- strict thread matches above, loose matches on Subject: below --
2013-03-19 21:40 python sessions Gary Oberbrunner
2013-03-20 0:04 ` John Hendy
2013-03-20 3:07 ` Nick Dokos
2013-03-20 6:44 ` Andreas Röhler
2013-03-20 12:54 ` Ista Zahn
2013-03-20 14:08 ` Nick Dokos
2013-03-20 14:28 ` Gary Oberbrunner
2013-03-20 17:21 ` Andreas Röhler
2013-03-20 7:08 ` Andreas Röhler
2013-03-20 15:38 ` John Hendy
2013-03-20 15:42 ` John Hendy
2013-03-20 16:06 ` Nick Dokos
[not found] ` <CAFChFygsUeBejEY6m2bSU0C5cjLYz0nUADH=s+BYxajfZ2sKKQ@mail.gmail.com>
2013-03-20 16:12 ` Fwd: " Gary Oberbrunner
2013-03-20 17:08 ` Andreas Röhler
2013-03-20 17:25 ` Nick Dokos
2013-03-20 17:54 ` John Hendy
2013-03-20 18:15 ` Nick Dokos
2013-03-20 18:32 ` Ista Zahn
2013-03-20 18:39 ` Nick Dokos
2013-03-20 18:43 ` Andreas Röhler
2013-03-20 19:42 ` Ista Zahn
2013-03-20 19:53 ` Andreas Röhler
2013-03-20 20:12 ` Ista Zahn
2013-03-20 20:25 ` Gary Oberbrunner
2013-03-20 22:06 ` Ista Zahn
2013-03-20 18:42 ` Andreas Röhler
2013-03-20 19:01 ` Andreas Röhler
[not found] ` <CAFChFygPrhuHHyMo2Vk2_OdksWVB=oACA7jnOXN+itUNqh-nqw@mail.gmail.com>
[not found] ` <CA+M2ft9bO7DU61vVeYrhduVvkg1V6PMuiyvsOy5tNWuXcSUEpw@mail.gmail.com>
[not found] ` <CAFChFyhbeXE4HNLKA6Ubii+MtQwD7=4khAypa+--coZrQiJekA@mail.gmail.com>
2013-03-21 1:22 ` Gary Oberbrunner
2013-03-21 1:54 ` John Hendy
2013-03-21 1:56 ` Gary Oberbrunner
2013-03-21 7:42 ` Andreas Röhler
2013-03-21 7:43 ` Bastien
2013-03-21 8:13 ` Andreas Röhler
2013-03-23 22:07 ` Eric Schulte
2013-03-24 1:29 ` John Hendy
2013-03-24 22:59 ` Eric Schulte
2013-03-25 2:38 ` Nick Dokos
2013-03-25 2:59 ` John Hendy
2013-03-25 6:34 ` Andreas Röhler
2013-03-25 15:40 ` Eric Schulte
2013-03-25 15:55 ` John Hendy
2013-03-25 16:07 ` Eric Schulte
2013-03-25 16:41 ` Nick Dokos
2013-03-25 16:01 ` Ista Zahn
2013-03-25 16:23 ` John Hendy
2013-03-25 16:43 ` Eric Schulte
2013-03-25 17:27 ` Andreas Röhler
2013-03-25 17:41 ` John Hendy
2013-03-25 18:16 ` Ista Zahn
2013-03-25 19:30 ` Ivan Andrus
2013-03-24 7:47 ` Andreas Röhler
2013-03-24 14:47 ` John Hendy
2013-03-24 15:30 ` Andreas Röhler
2013-03-24 16:58 ` Nick Dokos
2013-03-24 16:59 ` John Hendy
2013-03-24 18:41 ` Nick Dokos
2013-03-25 20:46 ` Andreas Röhler
2013-03-25 21:37 ` Eric Schulte
2013-03-26 6:29 ` Andreas Röhler
2013-03-26 12:32 ` Eric Schulte
2013-03-26 21:41 ` Gary Oberbrunner
2013-03-26 21:47 ` John Hendy
2013-03-27 6:19 ` Andreas Röhler
2013-03-30 7:19 ` Andreas Röhler
2012-08-26 20:11 Alternate format for datetree c b
2012-08-27 1:16 ` John Hendy
2012-08-27 4:04 ` Nick Dokos
2012-08-27 6:08 ` John Hendy
2012-08-28 8:49 ` Ian Barton
2012-08-28 12:49 ` Nick Dokos
2012-08-28 12:50 ` Nick Dokos
2012-08-29 7:49 ` Ian Barton
[not found] ` <lists@manor-farm.org>
2012-08-29 14:17 ` Nick Dokos
2012-08-29 14:25 ` John Hendy
2012-08-29 20:01 ` Ian Barton
2012-09-06 7:46 ` Ian Barton
2012-09-06 5:42 ` c b
2012-09-06 6:26 ` Nick Dokos
2012-09-06 7:00 ` Jambunathan K
2012-09-06 15:33 ` John Hendy
2012-09-06 16:08 ` Jonathan Leech-Pepin
2011-11-02 2:22 Pass LaTeX exporter option prior to \documentclass John Hendy
2011-11-02 2:43 ` suvayu ali
2011-11-02 10:30 ` suvayu ali
2011-11-03 17:48 ` John Hendy
2011-11-03 17:55 ` suvayu ali
2011-11-03 18:07 ` John Hendy
2011-11-04 17:29 ` Nick Dokos
2011-11-04 19:29 ` suvayu ali
2011-10-19 14:54 Prompt for time when clocking in? Nathan Neff
2011-10-19 15:12 ` John Hendy
2011-10-19 15:35 ` Nick Dokos
2011-10-20 16:15 ` Nathan Neff
2011-10-20 17:09 ` Nick Dokos
2011-10-20 17:44 ` Nathan Neff
2011-10-19 16:37 ` Bernt Hansen
2011-08-05 22:15 Handling errors in command line exporting of agenda? John Hendy
2011-08-05 23:34 ` suvayu ali
2011-08-05 23:35 ` suvayu ali
2011-08-08 18:12 ` John Hendy
2011-08-08 18:28 ` suvayu ali
2011-08-08 18:53 ` John Hendy
2011-08-08 18:59 ` suvayu ali
2011-08-08 19:48 ` John Hendy
2011-08-08 20:22 ` suvayu ali
2011-08-08 20:31 ` John Hendy
2011-08-08 20:33 ` Nick Dokos
2011-08-08 20:37 ` Nick Dokos
2011-08-08 20:54 ` John Hendy
2011-08-08 21:09 ` Nick Dokos
2011-08-08 21:27 ` John Hendy
2011-08-08 21:30 ` suvayu ali
2011-08-08 22:17 ` Nick Dokos
2011-08-08 21:46 ` suvayu ali
2011-06-15 10:29 BUG: Newest org-mode interferes with desktop save Rainer M Krug
2011-06-15 16:49 ` Eric Schulte
2011-06-15 17:35 ` Nick Dokos
2011-06-15 18:23 ` Rainer M Krug
2011-06-15 18:21 ` Rainer M Krug
2011-06-15 18:31 ` Eric Schulte
2011-06-15 18:59 ` Rainer M Krug
2011-06-15 22:40 ` Nick Dokos
2011-06-16 7:15 ` Rainer M Krug
2011-06-16 7:29 ` Jambunathan K
2011-06-16 8:22 ` Rainer M Krug
2011-05-24 15:54 Passing font size to exported LaTeX table John Hendy
2011-05-24 16:44 ` Sebastien Vauban
2011-05-24 18:57 ` John Hendy
2011-05-24 19:25 ` Nick Dokos
2011-05-24 19:31 ` John Hendy
2011-05-24 19:58 ` Thomas S. Dye
2011-05-24 20:42 ` Nick Dokos
2011-05-24 21:12 ` Nick Dokos
2011-05-24 21:19 ` Nick Dokos
2011-05-25 7:22 ` Thomas S. Dye
2011-05-27 0:58 ` suvayu ali
2011-05-27 6:46 ` Thomas S. Dye
2011-05-27 7:07 ` suvayu ali
2011-05-27 16:17 ` Thomas S. Dye
2011-05-27 16:50 ` Suvayu Ali
2011-05-27 17:37 ` Thomas S. Dye
2011-05-27 18:30 ` Suvayu Ali
2011-05-27 21:25 ` Thomas S. Dye
2011-05-28 7:17 ` Sebastien Vauban
2011-05-28 10:14 ` Suvayu Ali
2011-05-28 15:21 ` Nick Dokos
2011-05-28 18:10 ` Suvayu Ali
2011-06-01 18:50 ` Nick Dokos
2011-06-01 19:08 ` Suvayu Ali
2011-06-10 22:31 ` Suvayu Ali
2011-06-13 1:38 ` suvayu ali
2011-06-13 1:52 ` Nick Dokos
2011-06-13 2:40 ` Suvayu Ali
2011-06-13 3:29 ` Nick Dokos
2011-06-13 3:45 ` Thomas S. Dye
2011-06-13 4:27 ` Nick Dokos
2011-06-13 4:56 ` Suvayu Ali
2011-06-13 5:29 ` Nick Dokos
2011-06-13 6:42 ` Suvayu Ali
2011-05-24 20:06 ` Nick Dokos
2011-05-24 19:42 ` Sebastien Vauban
2010-08-21 19:30 Gnuplot unevenly spaced non-numeric data plot? John Hendy
2010-08-21 20:35 ` Eric S Fraga
2010-08-21 20:41 ` Nick Dokos
2010-08-21 21:11 ` John Hendy
2010-08-21 22:41 ` John Hendy
2010-08-21 23:17 ` Nick Dokos
2010-08-23 14:22 ` John Hendy
2010-08-23 15:16 ` Nick Dokos
[not found] ` <AANLkTi=WTLBL1Giq0GTrjCo-A1s=iP4u1Qxn57cH-xnB@mail.gmail.com>
[not found] ` <AANLkTimSVm=-2o39CQ9wSMT276Dee4Tuj9jLKJH-c+cd@mail.gmail.com>
2010-08-24 2:44 ` [For Worg?] " John Hendy
2010-08-24 5:25 ` suvayu ali
2010-08-24 5:56 ` Nick Dokos
2010-08-25 0:32 ` Eric Schulte
2010-08-25 1:06 ` John Hendy
2010-08-25 1:35 ` Eric Schulte
2010-08-25 18:38 ` John Hendy
2010-08-25 18:52 ` Eric Schulte
[not found] ` <jw.hendy@gmail.com>
2012-03-12 21:13 ` Beamer specific setupfile? John Hendy
2012-03-12 21:48 ` Nick Dokos
2012-03-12 22:09 ` John Hendy
2012-03-12 22:30 ` Nick Dokos
2012-03-12 22:44 ` Nick Dokos
2012-03-13 5:02 ` John Hendy
2012-03-13 5:46 ` Nick Dokos
2012-04-25 8:16 ` Eric Fraga
2012-04-25 8:59 ` Eric Fraga
2012-03-12 23:01 ` Nick Dokos
2012-03-12 21:51 ` Nick Dokos
2012-03-12 22:05 ` Nick Dokos
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=873907afsd.fsf@gmail.com \
--to=schulte.eric@gmail.com \
--cc=andreas.leha@med.uni-goettingen.de \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).