guile performance - Ackermann function: way slower than emacs, slower still if compiled

2009-08-04 Thread Ken Raeburn
I implemented Ackermann's function A(m,n), a recursive function with scary performance characteristics, based on the definition given at wikipedia involving lots of +1 and -1 operations... A(0,n) takes constant time to compute assuming bounded integer sizes, A(1,n) takes linear time, A(2,n

Re: Elisp performance

2009-08-04 Thread Andy Wingo
Hello! (Was away for the weekend, but back hacking all week now.) On Thu 30 Jul 2009 22:18, Neil Jerram writes: > Daniel Kraft writes: > >> Lambda arguments are still always dynamically bound, which is quite a >> pity as it inhibits tail-call optimization; Indeed, a pity. Though self-tail cal

Re: Elisp performance

2009-08-04 Thread Andy Wingo
Hi, On Fri 31 Jul 2009 01:54, Ken Raeburn writes: > On Jul 30, 2009, at 16:18, Neil Jerram wrote: >> The main thing I believe that makes a fluid different from a normal >> variable is that a fluid can have a different value in each thread - >> which is not relevant to Elisp. > > Not yet, at leas

Re: Elisp performance

2009-08-04 Thread Andy Wingo
Hi Daniel, On Fri 31 Jul 2009 08:09, Daniel Kraft writes: > 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 wr

Re: Elisp performance

2009-08-04 Thread Daniel Kraft
Andy Wingo wrote: Daniel Kraft writes: Lambda arguments are still always dynamically bound, which is quite a pity as it inhibits tail-call optimization; Indeed, a pity. Though self-tail calls can be optimized... still, irritating. Yes, but I fear this will complicate the compiler a lot and

Re: Elisp performance

2009-08-04 Thread Andy Wingo
Hello Daniel, On Fri 31 Jul 2009 08:02, Daniel Kraft writes: > Hi Neil, > > Neil Jerram wrote: >> Daniel Kraft writes: >>> Lambda arguments are still always dynamically bound, which is quite a >>> pity as it inhibits tail-call optimization; >> >> This prompted me to wonder if using fluids is t

Re: Elisp performance

2009-08-04 Thread Andy Wingo
Hi Daniel, On Fri 31 Jul 2009 17:14, Daniel Kraft writes: > Hi Ken, > > Ken Raeburn wrote: >> On Jul 31, 2009, at 02:02, Daniel Kraft wrote: > Iterative prime sieve, (length (find-primes-to 5000)): > Scheme: 0.42s > Elisp, no void checks, lexical let: 3.40s > Elisp, no void ch

Re: review/merge request: wip-array-refactor

2009-08-04 Thread Andy Wingo
Hi Neil, On Thu 30 Jul 2009 23:10, Neil Jerram writes: > Andy Wingo writes: > >> On Wed 22 Jul 2009 23:48, Neil Jerram writes: >> >>> I have two overall questions in mind. >>> >>> - What do you have in mind as regards releasing this? Even though it >>> looks good, I think it would be better

Re: guile performance - Ackermann function: way slower than emacs, slower still if compiled

2009-08-04 Thread Marijn Schouten (hkBst)
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Ken Raeburn wrote: > I implemented Ackermann's function A(m,n), a recursive function with > scary performance characteristics, based on the definition given at > wikipedia involving lots of +1 and -1 operations... A(0,n) takes > constant time to compu

Re: Elisp performance

2009-08-04 Thread Andy Wingo
Hi Daniel, On Wed 29 Jul 2009 14:50, Daniel Kraft writes: > For the timings, I used a simple prime sieve implemented imperatively > with while and set's, because the recursive one would put elisp without > tail-calls at a disadvantage (and because lexical binding does not yet > work for lambda a

Re: Elisp performance

2009-08-04 Thread Andy Wingo
Hi Ken, As a voice from the the sidelines, I just want to say thanks for all your input! On Thu 30 Jul 2009 05:23, Ken Raeburn writes: > Would [open-coding primitives] interfere with possibly blending Scheme > GOOPS code with Elisp someday? Or is the generic support there at a > lower level tha

Re: guile performance - Ackermann function: way slower than emacs, slower still if compiled

2009-08-04 Thread Ken Raeburn
On Aug 4, 2009, at 09:52, Marijn Schouten (hkBst) wrote: A more idiomatic way to implement it that also works in other Schemes is: I know, shame on me for using "set!" in my code. :-) I was aiming for code very similar between Lisp and Scheme versions, so that (insert some hand-waving here)

Re: Elisp performance

2009-08-04 Thread Ken Raeburn
On Aug 4, 2009, at 06:17, Andy Wingo wrote: Hello! (Was away for the weekend, but back hacking all week now.) Welcome back! On Thu 30 Jul 2009 22:18, Neil Jerram writes: Daniel Kraft writes: Lambda arguments are still always dynamically bound, which is quite a pity as it inhibits tail

Re: Elisp performance

2009-08-04 Thread Ken Raeburn
On Aug 4, 2009, at 11:47, Andy Wingo wrote: In any case, because of dynamic scoping and the expected behaviour of flet to change possibly primitives during its extent, I think we can't do anything like that for Elisp (except providing guile-primitive for hand-optimizing such calls). Hmm.

Re: Elisp performance

2009-08-04 Thread Daniel Kraft
Andy Wingo wrote: Don't conjecture, profile ;-) I'd like to do so, but it seems that Guile does not include a profiler, does it? A search turned up some patch/code, but I didn't get the impression it would work very well -- do you have some hints, getting some real profiling would be very u

Re: [Guile-commits] GNU Guile branch, master, updated. release_1-9-1-18-g904a78f

2009-08-04 Thread Andy Wingo
Hi Mike, Another niggle: On Sat 01 Aug 2009 19:58, Mike Gran writes: > On Fri, 2009-07-31 at 01:21 +0200, Ludovic Courtès wrote: >> "Michael Gran" writes: >> > +#define SCM_MAKE_CHAR(x) ({scm_t_int32 _x = (x);\ >> > + _x < 0

Re: Elisp performance

2009-08-04 Thread Andy Wingo
On Tue 04 Aug 2009 18:12, Ken Raeburn writes: > On Aug 4, 2009, at 11:47, Andy Wingo wrote: >>> In any case, because of dynamic scoping and the expected behaviour of >>> flet to change possibly primitives during its extent, I think we >>> can't >>> do anything like that for Elisp (except providin

Re: Elisp performance

2009-08-04 Thread Andy Wingo
On Tue 04 Aug 2009 18:17, Daniel Kraft writes: > Andy Wingo wrote: >> Don't conjecture, profile ;-) > > I'd like to do so, but it seems that Guile does not include a profiler, > does it? A search turned up some patch/code, but I didn't get the > impression it would work very well -- do you have