unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
* Serious performance issues with 1.9.0
@ 2009-07-15 10:07 Martin Ward
  2009-07-16  7:59 ` Neil Jerram
  0 siblings, 1 reply; 14+ messages in thread
From: Martin Ward @ 2009-07-15 10:07 UTC (permalink / raw)
  To: bug-guile


Running a test program on Guile 1.8.7 takes 100 seconds CPU time.
On Guile 1.9.0 (beta) the same program takes 237 seconds CPU time!

For comparison:

Gambit v4.4.4 takes 60 seconds.
SCM version 5e5 takes 20.7 seconds.
Hobbit compiled code running under SCM takes 1.1 seconds!

There was some talk a few years ago about integrating the Hobbit
compiler with Guile: but nothing seems to have come of it.

I can send you the code if you like (its the FermaT Transformation System
which is released under the GPL) its about 7.7MB of Scheme source,
so I didn't want to include it in this message :-)

-- 
			Martin

martin@gkc.org.uk http://www.cse.dmu.ac.uk/~mward/ Erdos number: 4
G.K.Chesterton web site: http://www.cse.dmu.ac.uk/~mward/gkc/




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Serious performance issues with 1.9.0
  2009-07-15 10:07 Serious performance issues with 1.9.0 Martin Ward
@ 2009-07-16  7:59 ` Neil Jerram
  2009-07-16  8:44   ` Neil Jerram
  2009-07-16 10:16   ` Martin Ward
  0 siblings, 2 replies; 14+ messages in thread
From: Neil Jerram @ 2009-07-16  7:59 UTC (permalink / raw)
  To: Martin Ward; +Cc: bug-guile

Martin Ward <martin@gkc.org.uk> writes:

> Running a test program on Guile 1.8.7 takes 100 seconds CPU time.
> On Guile 1.9.0 (beta) the same program takes 237 seconds CPU time!

I wonder if that's because the code is being auto-compiled?  Do you
get a better result if you set environment variable GUILE_AUTO_COMPILE
to 0 ?

> For comparison:
>
> Gambit v4.4.4 takes 60 seconds.
> SCM version 5e5 takes 20.7 seconds.

We're working on it!

> Hobbit compiled code running under SCM takes 1.1 seconds!
>
> There was some talk a few years ago about integrating the Hobbit
> compiler with Guile: but nothing seems to have come of it.

No, that line of work fizzled out.  It may come back again in the more
general compilation and language transformation framework that we now
have.

Regards,
        Neil




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Serious performance issues with 1.9.0
  2009-07-16  7:59 ` Neil Jerram
@ 2009-07-16  8:44   ` Neil Jerram
  2009-07-16 10:16   ` Martin Ward
  1 sibling, 0 replies; 14+ messages in thread
From: Neil Jerram @ 2009-07-16  8:44 UTC (permalink / raw)
  To: Martin Ward; +Cc: bug-guile

Neil Jerram <neil@ossau.uklinux.net> writes:

> Martin Ward <martin@gkc.org.uk> writes:
>
>> Running a test program on Guile 1.8.7 takes 100 seconds CPU time.
>> On Guile 1.9.0 (beta) the same program takes 237 seconds CPU time!
>
> I wonder if that's because the code is being auto-compiled?  Do you
> get a better result if you set environment variable GUILE_AUTO_COMPILE
> to 0 ?

Or if you run your program a second time?  (In which case it should
pick up and use the compiled code.)

     Neil




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Serious performance issues with 1.9.0
  2009-07-16  7:59 ` Neil Jerram
  2009-07-16  8:44   ` Neil Jerram
@ 2009-07-16 10:16   ` Martin Ward
  2009-07-17 15:16     ` Ludovic Courtès
  1 sibling, 1 reply; 14+ messages in thread
From: Martin Ward @ 2009-07-16 10:16 UTC (permalink / raw)
  To: Neil Jerram; +Cc: bug-guile

On Thursday 16 Jul 2009 08:59, Neil Jerram wrote:
> Martin Ward <martin@gkc.org.uk> writes:
> > Running a test program on Guile 1.8.7 takes 100 seconds CPU time.
> > On Guile 1.9.0 (beta) the same program takes 237 seconds CPU time!
>
> I wonder if that's because the code is being auto-compiled?  Do you
> get a better result if you set environment variable GUILE_AUTO_COMPILE
> to 0 ?

This is with Guile 1.9.1, running on a slightly different program:

GUILE_AUTO_COMPILE 1 takes 204 seconds
GUILE_AUTO_COMPILE 0 takes 213 seconds

The only file in ~/.cache is guile-1.9.1/test-suite/lib.scm.go

Guile 1.8.7 takes 81 seconds on this example.

SCM 5e5 takes 18 seconds.
Hobbit-compiled code: less than 1 second.

> > For comparison:
> >
> > Gambit v4.4.4 takes 60 seconds.
> > SCM version 5e5 takes 20.7 seconds.
>
> We're working on it!
>
> > Hobbit compiled code running under SCM takes 1.1 seconds!
> >
> > There was some talk a few years ago about integrating the Hobbit
> > compiler with Guile: but nothing seems to have come of it.
>
> No, that line of work fizzled out.  It may come back again in the more
> general compilation and language transformation framework that we now
> have.

If guile is intended to be a "proper" language: suitable for production use
and not just for playing with toy programs, then a decent compiler
is essential.

I had to hack hobbit just to get separate compilation to work!

-- 
			Martin

martin@gkc.org.uk http://www.cse.dmu.ac.uk/~mward/ Erdos number: 4
G.K.Chesterton web site: http://www.cse.dmu.ac.uk/~mward/gkc/




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Serious performance issues with 1.9.0
  2009-07-16 10:16   ` Martin Ward
@ 2009-07-17 15:16     ` Ludovic Courtès
  2009-07-17 17:27       ` Martin Ward
  0 siblings, 1 reply; 14+ messages in thread
From: Ludovic Courtès @ 2009-07-17 15:16 UTC (permalink / raw)
  To: bug-guile; +Cc: Martin Ward

Hi,

Martin Ward <martin@gkc.org.uk> writes:

> The only file in ~/.cache is guile-1.9.1/test-suite/lib.scm.go

Then there must be something wrong.

If you unset GUILE_AUTO_COMPILE, Guile should automatically compile all
source files not already compiled and store them under ~/.cache.  When
it does, it prints lines telling which files it auto-compiled, possibly
with an error message if it failed to do so.

Can you double-check what happens exactly?

> Guile 1.8.7 takes 81 seconds on this example.
>
> SCM 5e5 takes 18 seconds.

Now, *this* is bad news for 1.8.  I suppose 1.8.7 compiled
`--without-threads' would yield better performance.  It would be
interesting to try that.

Thanks,
Ludo'.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Serious performance issues with 1.9.0
  2009-07-17 15:16     ` Ludovic Courtès
@ 2009-07-17 17:27       ` Martin Ward
  2009-07-17 18:10         ` Ludovic Courtès
  2009-07-26 12:01         ` Andy Wingo
  0 siblings, 2 replies; 14+ messages in thread
From: Martin Ward @ 2009-07-17 17:27 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guile, Neil Jerram


Now here's something totally wierd with Guile 1.8.7:

echo '(load "ALL.scm")(load "prog_to_spec_TEST.scx")(exit)' | /usr/bin/time 
guile

takes 139 seconds CPU time.

/usr/bin/time guile -l ALL.scm -s prog_to_spec_TEST.scx

takes only 56 seconds CPU time.

You read that right: if I pass the files on the command line
it takes less than half the time to process, compared to typing "load"
commands at the prompt, or sending them to standard input.

The same thing happens with Guile 1.9.1:

Echo load commands to stdin: 301 seconds CPU time
Pass the files on the command line: 150 seconds CPU time.

Still nothing appearing in ~/.cache though.

This problem seems to apply to all files:
for example, the file below takes 140 seconds CPU time
when run via echo '("load file.scm")' | guile
and only 46 seconds when run via guile -s file.scm

For Guile 1.8.7 the times are 75 seconds and 31 seconds respectively.

Here is the code I used for the second test:


(define (force-output) #t)
(define /i '())
(define (@fib /n)
  (if (<= /n 1)
    1
    (+ (@fib (- /n 1)) (@fib (- /n 2)))))

(let ((var-save /i) (for-step 1) (for-end 35))
  (set! /i 1)
  (let for-loop ()
    (cond ((or (and (> 1 0) (<= /i for-end))
               (and (< 1 0) (>= /i for-end)))
           (begin
             (display "fib(")
             (begin
               (display /i)
               (begin
                 (display ") = ")
                 (begin
                   (display (@fib /i))
                   (newline)
                   (force-output)))))
           (set! /i (+ /i for-step))
           (for-loop))
          (#t #t)))
  (set! /i var-save))

(exit)




-- 
			Martin

martin@gkc.org.uk http://www.cse.dmu.ac.uk/~mward/ Erdos number: 4
G.K.Chesterton web site: http://www.cse.dmu.ac.uk/~mward/gkc/




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Serious performance issues with 1.9.0
  2009-07-17 17:27       ` Martin Ward
@ 2009-07-17 18:10         ` Ludovic Courtès
  2009-07-19 13:56           ` Martin Ward
  2009-07-26 12:01         ` Andy Wingo
  1 sibling, 1 reply; 14+ messages in thread
From: Ludovic Courtès @ 2009-07-17 18:10 UTC (permalink / raw)
  To: Martin Ward; +Cc: bug-guile, Neil Jerram

Hi,

Martin Ward <martin@gkc.org.uk> writes:

> Now here's something totally wierd with Guile 1.8.7:
>
> echo '(load "ALL.scm")(load "prog_to_spec_TEST.scx")(exit)' | /usr/bin/time 
> guile
>
> takes 139 seconds CPU time.
>
> /usr/bin/time guile -l ALL.scm -s prog_to_spec_TEST.scx
>
> takes only 56 seconds CPU time.

That's expected: in the first case, Guile uses the debugging evaluator,
whereas in the latter it uses the normal (faster) evaluator.

Adding `--no-debug' to the command line of the first one should yield
the same timings as the second one.

> The same thing happens with Guile 1.9.1:
>
> Echo load commands to stdin: 301 seconds CPU time
> Pass the files on the command line: 150 seconds CPU time.
>
> Still nothing appearing in ~/.cache though.

Oh, that's right: it doesn't auto-compile files passed on the
command-line, only modules that are use-module'd it seems.

Not sure whether this is intended, though.  Andy?

You can work around it by manually compiling your source files:

  guile-tools compile -o ALL.go ALL.scm
  ...

The compiled version can then be run with something like:

  guile -c '(load-compiled "ALL.go")'

Can you try this?

Thanks for your perseverance!

Ludo'.




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Serious performance issues with 1.9.0
  2009-07-17 18:10         ` Ludovic Courtès
@ 2009-07-19 13:56           ` Martin Ward
  2009-07-19 22:03             ` Andy Wingo
  0 siblings, 1 reply; 14+ messages in thread
From: Martin Ward @ 2009-07-19 13:56 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guile, Neil Jerram

On Friday 17 Jul 2009 19:10, Ludovic Courtès wrote:
> You can work around it by manually compiling your source files:
>
>   guile-tools compile -o ALL.go ALL.scm
>   ...
>
> The compiled version can then be run with something like:
>
>   guile -c '(load-compiled "ALL.go")'
>
> Can you try this?

This is what I get:

% guile-tools compile -o ALL.go ALL.scm
ERROR: Value out of range 0 to 255: 633
89.725u 7.472s 1:37.29 99.8%    0+0k 0+0io 4pf+0w


Just for fun, I tried out a Fibonacci numbers benchmark (see below).
Here are the results:

Guile 1.9.1:     128.8 secs (compiled)
SCM version 5e5: 126.5 secs (interpreted)
Hobbit compiled:   2.2 secs (compiled)

Its a pity that you decided to write your own compiler instead
of continuing development with Hobbit :-(

Here is the test program:

(define /i '())
(define (@fib /n)
  (if (<= /n 1)
    1
    (+ (@fib (- /n 1)) (@fib (- /n 2)))))

(let ((var-save /i) (for-step 1) (for-end 40))
  (set! /i 1)
  (let for-loop ()
    (cond ((or (and (> 1 0) (<= /i for-end))
               (and (< 1 0) (>= /i for-end)))
           (begin
             (display "fib(")
             (begin
               (display /i)
               (begin
                 (display ") = ")
                 (begin
                   (display (@fib /i))
                   (newline)
                   (force-output)))))
           (set! /i (+ /i for-step))
           (for-loop))
          (#t #t)))
  (set! /i var-save))

(exit)




-- 
			Martin

martin@gkc.org.uk http://www.cse.dmu.ac.uk/~mward/ Erdos number: 4
G.K.Chesterton web site: http://www.cse.dmu.ac.uk/~mward/gkc/




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Serious performance issues with 1.9.0
  2009-07-19 13:56           ` Martin Ward
@ 2009-07-19 22:03             ` Andy Wingo
  2009-07-20 12:48               ` Martin Ward
  2009-07-20 22:00               ` Ludovic Courtès
  0 siblings, 2 replies; 14+ messages in thread
From: Andy Wingo @ 2009-07-19 22:03 UTC (permalink / raw)
  To: Martin Ward; +Cc: bug-guile, Ludovic Courtès, Jerram

Hello,

On Sun 19 Jul 2009 15:56, Martin Ward <martin@gkc.org.uk> writes:

> On Friday 17 Jul 2009 19:10, Ludovic Courtès wrote:
>> You can work around it by manually compiling your source files:
>>
>>   guile-tools compile -o ALL.go ALL.scm
>>   ...
>>
>> The compiled version can then be run with something like:
>>
>>   guile -c '(load-compiled "ALL.go")'
>>
>> Can you try this?
>
> This is what I get:
>
> % guile-tools compile -o ALL.go ALL.scm
> ERROR: Value out of range 0 to 255: 633
> 89.725u 7.472s 1:37.29 99.8%    0+0k 0+0io 4pf+0w

Discussed here:

  http://article.gmane.org/gmane.lisp.guile.devel/8882

I'm working on a fix, hopefully within a couple of days.

> Its a pity that you decided to write your own compiler instead
> of continuing development with Hobbit :-(

Hobbit is a whole-program compiler. Guile needs an incremental,
embeddable compiler, with source information, and a repl, etc etc.
Apples and oranges, to a rough approximation.

Guile will be fast, but it will take a couple more years. In the
meantime, it is getting better, but if you are in a hurry for some
reason, perhaps some other scheme would suit your needs better.

Cheers,

Andy
-- 
http://wingolog.org/




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Serious performance issues with 1.9.0
  2009-07-19 22:03             ` Andy Wingo
@ 2009-07-20 12:48               ` Martin Ward
  2009-07-24 10:23                 ` Andy Wingo
  2009-07-20 22:00               ` Ludovic Courtès
  1 sibling, 1 reply; 14+ messages in thread
From: Martin Ward @ 2009-07-20 12:48 UTC (permalink / raw)
  To: Andy Wingo; +Cc: bug-guile, Ludovic Courtès, Neil Jerram

On Sunday 19 Jul 2009 23:03, Andy Wingo wrote:
> Discussed here:
>
>   http://article.gmane.org/gmane.lisp.guile.devel/8882
>
> I'm working on a fix, hopefully within a couple of days.

Great! Let me know when it is ready, and I'll put it through
its paces for you.

> > Its a pity that you decided to write your own compiler instead
> > of continuing development with Hobbit :-(
>
> Hobbit is a whole-program compiler. Guile needs an incremental,
> embeddable compiler, with source information, and a repl, etc etc.
> Apples and oranges, to a rough approximation.

I needed to persuade Hobbit to compile files separately,
and found a couple of ways to do it:

Slow Solution: Ensure everything is defined as an OBJT by adding the line:
(define compile-new-proc-redefined #t) to one of the files in each Hobbit
compiler call. This ensures all new procs are typed as OBJT, which causes
some loss of efficiency.

Fast Solution: Add the names of all the procs defined in compiled files
to the list *special-scm->c-functions* after loading hobbit.scm but before
calling hobbit. These will then be treated as simple functions, even when they
are defined externally.

Compiling the whole of FermaT in a single file still gives a performance
boost of about 18%, but compilation takes a long time!

> Guile will be fast, but it will take a couple more years. In the
> meantime, it is getting better, but if you are in a hurry for some
> reason, perhaps some other scheme would suit your needs better.

For performance runs, speed is top priority. But if there is a bug
somewhere then the Hobbit compiled code just crashes with a segfault.
In this case, I re-run the failed process with FermaT debugging turned on:
this creates lots of checkpoints. I can then run the program from 
the last checkpoint under a Scheme interpreter with good debugging facilities.
This is where implementations such as Guile are useful.

But I don't see why the latest version of Guile has to be half as fast
as the previous version!

-- 
			Martin

martin@gkc.org.uk http://www.cse.dmu.ac.uk/~mward/ Erdos number: 4
G.K.Chesterton web site: http://www.cse.dmu.ac.uk/~mward/gkc/




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Serious performance issues with 1.9.0
  2009-07-19 22:03             ` Andy Wingo
  2009-07-20 12:48               ` Martin Ward
@ 2009-07-20 22:00               ` Ludovic Courtès
  1 sibling, 0 replies; 14+ messages in thread
From: Ludovic Courtès @ 2009-07-20 22:00 UTC (permalink / raw)
  To: bug-guile

Andy Wingo <wingo@pobox.com> writes:

[...]

> Discussed here:
>
>   http://article.gmane.org/gmane.lisp.guile.devel/8882

Oops, sorry for repeating what you had already said.

Thanks,
Ludo'.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Serious performance issues with 1.9.0
  2009-07-20 12:48               ` Martin Ward
@ 2009-07-24 10:23                 ` Andy Wingo
  0 siblings, 0 replies; 14+ messages in thread
From: Andy Wingo @ 2009-07-24 10:23 UTC (permalink / raw)
  To: Martin Ward; +Cc: bug-guile, Ludovic Courtès, Jerram

On Mon 20 Jul 2009 14:48, Martin Ward <martin@gkc.org.uk> writes:

> On Sunday 19 Jul 2009 23:03, Andy Wingo wrote:
>> Discussed here:
>>
>>   http://article.gmane.org/gmane.lisp.guile.devel/8882
>>
>> I'm working on a fix, hopefully within a couple of days.
>
> Great! Let me know when it is ready, and I'll put it through
> its paces for you.

Well! Your code brought to light three limitations in the current code,
and two bugs.

The first limitation was that before, we allocated all set! variables in
a linear list within a function. Now they are allocated in boxes on the
stack. I increased the number of possible stack variables from 255 to
64K, but that turned out not to be necessary, since your set! variables
were often in ephemeral lexical scopes, so the local variable slots
could be reused in different parts of the function.

Then the first bug: sometimes the alpha-renamed variables from psyntax
were not globally unique. The algorithm was, "variable stem +
monotonically increasing integer". Obviously that doesn't necessarily
work if the variable stem ended in an integer. I was aware of this, but
somehow it hadn't bitten anyone until compiling your code. Now it is
fixed.

At this point I could compile ALL.scm.

Then the second limitation: the default VM stack is too small, and we
have no overflow handler to increase it. So I raised the default VM
stack size. We'll lower it back down again, perhaps, once we implement
overflow handlers.

Then the second bug: ALL.scm compiled, and the first could
prog_to_spec_TEST tests passed, but then I got an "invalid instruction"
error. But the function that produced the error disassembled fine...
then I noticed the function was around 70K bytes in length, close to
another limit: that jumps are encoded in a 16-bit value. It didn't take
too much more poking to find out that a forward jump of 64823 bytes was
being interpreted as a backwards jump, because it's a signed 16-bit
value. I added some more checks in the assembler to catch this at
compile-time.

Which brings us to now. ALL.scm doesn't compile any more because of that
16-bit limit, which is now caught correctly. I am afraid we will have to
move to 32-bit words as Ludovic has suggested all along, because the
proliferation of short and long addressing modes is getting too much. I
guess that's the next thing on my plate, then...

Regards,

Andy
-- 
http://wingolog.org/




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Serious performance issues with 1.9.0
  2009-07-17 17:27       ` Martin Ward
  2009-07-17 18:10         ` Ludovic Courtès
@ 2009-07-26 12:01         ` Andy Wingo
  2009-08-11 22:31           ` Andy Wingo
  1 sibling, 1 reply; 14+ messages in thread
From: Andy Wingo @ 2009-07-26 12:01 UTC (permalink / raw)
  To: Martin Ward; +Cc: bug-guile, Ludovic Courtès, Jerram

Hi Martin,

On Fri 17 Jul 2009 19:27, Martin Ward <martin@gkc.org.uk> writes:

> Now here's something totally wierd with Guile 1.8.7:
>
> echo '(load "ALL.scm")(load "prog_to_spec_TEST.scx")(exit)' | /usr/bin/time 
> guile
>
> takes 139 seconds CPU time.
>
> /usr/bin/time guile -l ALL.scm -s prog_to_spec_TEST.scx
>
> takes only 56 seconds CPU time.
>
> You read that right: if I pass the files on the command line
> it takes less than half the time to process, compared to typing "load"
> commands at the prompt, or sending them to standard input.
>
> The same thing happens with Guile 1.9.1:
>
> Echo load commands to stdin: 301 seconds CPU time
> Pass the files on the command line: 150 seconds CPU time.

And pulling up some other numbers you mentioned in another mail:

> Testing prog_to_spec_TEST.scx:
>
> Guile 1.9.1:     260.9 secs
> Guile 1.8.7:     135.9 secs
> Gambit v4.4.4:    88.3 secs
> SCM version 5e5:  29.4 secs
> Hobbit compiled:   1.3 secs

The difference between the two Guile times in both cases is the
lengthier runs use the debugging evaluator, which gives you nice
backtraces among other things.

Guile 1.9.1 is slower than 1.8.7 because the interpreter receives more
"primitive" code -- many of the speed special-cases don't have a chance
to work in 1.9.1.

However the good news, or perhaps just "better" news, is that Guile from
git can compile your code now. Compiling ALL.scm takes a good long time
-- it could be 3 minutes or so, I didn't measure -- but once it's
compiled it loads instantly, and you don't have to compile it again
unless ALL.scm changes. (As Ludovic mentioned, in the future we should
support autocompilation for files passed on the command line.)

Compiling prog_to_spec_TEST takes just a couple of seconds. Running
that, I got:

scheme@(guile-user)> (use-modules (system base compile))
scheme@(guile-user)> (compile-file "/tmp/ALL.scm")
$1 = "/home/wingo/.cache/guile/ccache/1.9/tmp/ALL.scm.go"
scheme@(guile-user)> (load-compiled $1)
scheme@(guile-user)> (compile-file "/tmp/prog_to_spec_TEST.scx")
$2 = "/home/wingo/.cache/guile/ccache/1.9/tmp/prog_to_spec_TEST.scx.go"
scheme@(guile-user)> ,t (load-compiled $2)
 1st test of `Prog_To_Spec'  was OK.
 2nd test of `Prog_To_Spec'  was OK.
 3rd test of `Prog_To_Spec'  was OK.
 4th test of `Prog_To_Spec'  was OK.
 5th test of `Prog_To_Spec'  was OK.
 6th test of `Prog_To_Spec'  was OK.
 7th test of `Prog_To_Spec'  was OK.
 8th test of `Prog_To_Spec'  was OK.
 9th test of `Prog_To_Spec'  was OK.
10th test of `Prog_To_Spec'  was OK.
11th test of `Prog_To_Spec'  was OK.
12th test of `Prog_To_Spec'  was OK.
13th test of `Prog_To_Spec'  was OK.
#t
clock utime stime cutime cstime gctime
30.09 29.64  0.09   0.00   0.00   0.24

So, 30 seconds. Note that that's with full debugging information --
which takes up a fair amount of the 4.5 MB compiled version of ALL.scm.
Also, it's with the debugging version of the VM, which performs many
safety checks. I suspect we could get it faster with the VM, but big
further improvements should involve native code compilation, I think,
and will take some time.

Thanks for the bug report, it found some interesting issues.

Andy
-- 
http://wingolog.org/




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Serious performance issues with 1.9.0
  2009-07-26 12:01         ` Andy Wingo
@ 2009-08-11 22:31           ` Andy Wingo
  0 siblings, 0 replies; 14+ messages in thread
From: Andy Wingo @ 2009-08-11 22:31 UTC (permalink / raw)
  To: Martin Ward; +Cc: bug-guile, Ludovic Courtès, Jerram, Neil

Hi,

On Sun 26 Jul 2009 14:01, Andy Wingo <wingo@pobox.com> writes:

> On Fri 17 Jul 2009 19:27, Martin Ward <martin@gkc.org.uk> writes:
>
>> Testing prog_to_spec_TEST.scx:
>>
>> Guile 1.9.1:     260.9 secs
>> Guile 1.8.7:     135.9 secs
>> Gambit v4.4.4:    88.3 secs
>> SCM version 5e5:  29.4 secs
>> Hobbit compiled:   1.3 secs
>
> scheme@(guile-user)> (compile-file "/tmp/prog_to_spec_TEST.scx")
> $2 = "/home/wingo/.cache/guile/ccache/1.9/tmp/prog_to_spec_TEST.scx.go"
> scheme@(guile-user)> ,t (load-compiled $2)
> clock utime stime cutime cstime gctime
> 30.09 29.64  0.09   0.00   0.00   0.24

Now with current Guile I get the following:

scheme@(guile-user)> (compile-file "/tmp/prog_to_spec_TEST.scx")
$2 = "/home/wingo/.cache/guile/ccache/1.9-0.A-LE-4/tmp/prog_to_spec_TEST.scx.go"
scheme@(guile-user)> ,t (load-compiled $2)
clock utime stime cutime cstime gctime
23.21 22.90  0.00   0.00   0.00   0.28

23 seconds.

> Note that that's with full debugging information -- which takes up a
> fair amount of the 4.5 MB compiled version of ALL.scm. Also, it's with
> the debugging version of the VM, which performs many safety checks.

This is still the case.

Regards,

Andy
-- 
http://wingolog.org/




^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2009-08-11 22:31 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-15 10:07 Serious performance issues with 1.9.0 Martin Ward
2009-07-16  7:59 ` Neil Jerram
2009-07-16  8:44   ` Neil Jerram
2009-07-16 10:16   ` Martin Ward
2009-07-17 15:16     ` Ludovic Courtès
2009-07-17 17:27       ` Martin Ward
2009-07-17 18:10         ` Ludovic Courtès
2009-07-19 13:56           ` Martin Ward
2009-07-19 22:03             ` Andy Wingo
2009-07-20 12:48               ` Martin Ward
2009-07-24 10:23                 ` Andy Wingo
2009-07-20 22:00               ` Ludovic Courtès
2009-07-26 12:01         ` Andy Wingo
2009-08-11 22:31           ` Andy Wingo

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).