[Ecls-list] strange things with declarations, ECL 9.6.2

Gábor Balázs gabalz at gmail.com
Fri Aug 14 13:48:31 UTC 2009


Sorry for the late answer, I just returned back from holiday.

I tried it with the latest ECL 9.8.3 version (and gcc 4.3.3), and it works
properly as you said. However it is really slow compared to SBCL. I
converted 100000000 double floats to/from unsigned integers and on my
computer ECL was ~5 times slower than SBCL (code is attached to repeat this
test). I ran the test by (asdf:oos 'asdf:load-op :tryme). The speed
difference increases if more doubles are converted. The consed data amount
difference is also significant.

ECL:
  real time : 119.914 secs
  run time  : 111.667 secs
  gc count  : 8798 times
  consed    : 30900318944 bytes

SBCL
  23.515 seconds of real time
  21.789362 seconds of total run time (21.709357 user, 0.080005 system)
  [ Run times consist of 1.296 seconds GC time, and 20.494 seconds non-GC
time. ]
  92.66% CPU
  41,880,163,970 processor cycles
  5,114,640,016 bytes consed

I also tried my library's speed test and that showed me that ECL is 100-300
times slower than SBCL.

I know that ECL is not primarily designed for scientific computation
purposes, but I want to ask a few things.
- What kind of experience do you have about speed differences between ECL
and an other Lisp implementations (e.g. SBCL)?
- Can you recommend me a good profiler for ECL?  Should I use Slime or gprof
somehow?

Thank you for the advices.

Best,
`Gabor`


2009/7/15 Juan Jose Garcia-Ripoll <juanjose.garciaripoll at googlemail.com>

> 2009/7/9 Gábor Balázs <gabalz at gmail.com>:
> > I try to create a fast double encoder/decoder function for ECL like
> SBCL's
> > double-float-high-bits, double-float-low-bits and make-double-float. I
> want
> > to do it, because I want to support ECL by my library. But I experienced
> > very strange things with using type declarations. I attached my test
> code.
>
> The code to convert from a lisp object to a C integer was rejecting
> bignums, even though they enter into the ranges (0 UINT_MAX) and
> (INT_MIN, INT_MAX). It has been solved in the git and CVS
> repositories.
>
> Juanjo
>
> --
> Instituto de Física Fundamental, CSIC
> c/ Serrano, 113b, Madrid 28006 (Spain)
> http://juanjose.garciaripoll.googlepages.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20090814/1c70ea43/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tryme.lisp
Type: application/octet-stream
Size: 4645 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20090814/1c70ea43/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tryme.asd
Type: application/octet-stream
Size: 68 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20090814/1c70ea43/attachment-0001.obj>


More information about the ecl-devel mailing list