unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Daniel Kraft <d@domob.eu>
To: Ken Raeburn <raeburn@raeburn.org>
Cc: Andy Wingo <wingo@pobox.com>, guile-devel <guile-devel@gnu.org>,
	Neil Jerram <neil@ossau.uklinux.net>
Subject: Re: Elisp performance
Date: Fri, 31 Jul 2009 08:09:08 +0200	[thread overview]
Message-ID: <4A728A84.1010106@domob.eu> (raw)
In-Reply-To: <BE03D4FB-6911-44B8-B8C5-AA43DBAD51A8@raeburn.org>

Ken Raeburn wrote:
  > And maybe that's enough.  There's other stuff in Emacs besides variable
> bindings that would require dynamic-wind support, like flet, 
> save-excursion (preserves current buffer and position), 
> with-output-to-string and with-output-to-temp-buffer (preserve 
> 'standard-output'), as well as any number of explicit calls to 
> unwind-protect from Elisp code to alter and restore other global state 
> of the program (e.g., with set-default-file-modes or 
> set-standard-case-table).  The current incarnation of these things 
> assumes a single-threaded execution model.  So, since we can't make 
> Emacs multithreaded by simply dropping Guile Elisp into it, if Emacs is 
> all we're concerned about, maybe assuming single-threaded execution only 
> is okay for now.
 >
> On the other hand, if we want users to be able to write code snippets in 
> Elisp and have them callable from a concurrently-multithreaded Scheme 
> program (no Emacs processes in sight), I think we'll want the 
> multithreaded support for the basic Elisp language sooner rather than 
> later, even if multithreaded Emacs needs much more work.

As already stated upthread, I'm not sure about this myself...  It would 
be cool to stay as flexible as possible with regards to future 
multi-threading, but on the other hand I also like the idea of getting 
rid of the fluids.  My timings there seem to suggest that fluids at 
least have "some" performance hit.

Of course, anyone interested in performance can also use lexical-let 
instead of let and also get rid of all this performance problems as well 
;)  But the same argument may hold for the threading argument, too, so 
if you want to write elisp code that is called from multi-threaded 
Scheme, just avoid dynamic binding and you'll get no problems...

> I also don't know how complicated a switch to stop using fluids would 
> be.  If it's not too painful, the performance impact would be 
> interesting to see -- does it get us closer to the performance of Emacs 
> itself?

Well, it will not be trivial but also quite doable, I think.  Regarding 
the performance, I'm quite sure it will help, but not so much about the 
actual quantitative impact -- but if we're lucky, it might be like that 
between dynamic and lexical let of my timings in the original post. 
This seems quite plausible to me.

Daniel

-- 
Done:  Arc-Bar-Cav-Ran-Rog-Sam-Tou-Val-Wiz
To go: Hea-Kni-Mon-Pri




  reply	other threads:[~2009-07-31  6:09 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-29 12:50 Elisp performance Daniel Kraft
2009-07-30  3:23 ` Ken Raeburn
2009-07-31  5:15   ` Daniel Kraft
2009-08-04 15:51   ` Andy Wingo
2009-07-30 20:18 ` Neil Jerram
2009-07-30 23:54   ` Ken Raeburn
2009-07-31  6:09     ` Daniel Kraft [this message]
2009-08-04 10:26       ` Andy Wingo
2009-08-04 10:26     ` Andy Wingo
2009-07-31  6:02   ` Daniel Kraft
2009-07-31  9:59     ` Ken Raeburn
2009-07-31 15:14       ` Daniel Kraft
2009-08-04 11:14         ` Andy Wingo
2009-08-04 11:00     ` Andy Wingo
2009-08-08 22:15       ` Ludovic Courtès
2009-08-04 10:17   ` Andy Wingo
2009-08-04 10:54     ` Daniel Kraft
2009-08-04 15:58     ` Ken Raeburn
2009-08-04 15:47 ` Andy Wingo
2009-08-04 16:12   ` Ken Raeburn
2009-08-04 19:28     ` Andy Wingo
2009-08-04 16:17   ` Daniel Kraft
2009-08-04 19:25     ` Andy Wingo

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.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A728A84.1010106@domob.eu \
    --to=d@domob.eu \
    --cc=guile-devel@gnu.org \
    --cc=neil@ossau.uklinux.net \
    --cc=raeburn@raeburn.org \
    --cc=wingo@pobox.com \
    /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.
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).