Peter Graves | 1 Dec 2003 04:00

Re: Re: ABL and GCJ

On Wed, 26 Nov 2003 at 10:47:19 +0100, Eric Marsden wrote:
> To anwser the performance question: the gcj native build is
> considerably slower than running in a JVM with JIT, and maybe hundreds
> of times slower than CMUCL.

For the more quantitatively inclined:

    (defun fib (n)
      (declare (type integer n))
      (if (< n 2) 1 (+ (fib (- n 1)) (fib (- n 2)))))

    (defun bench-fib ()
      (time (dotimes (i 50) (fib 25))))

    #+armedbear (sys::%nodebug)

Real time reported for one run of BENCH-FIB:

    ABL 0.0.3.3+ (GCJ 3.3.2)     interpreted   191.058 seconds
    ABL 0.0.3.3+ (Sun 1.4.2_02)  interpreted    68.12
    CLISP 2.31                   interpreted    37.964466

    ABL 0.0.3.3+ (GCJ 3.3.2)     compiled       32.837
    CLISP 2.31                   compiled        7.116795
    GCL 2.7.0                    compiled        5.440
    ABL 0.0.3.3+ (Sun 1.4.2_02)  compiled        4.265
    SBCL 0.8.5.44                compiled        1.887
    CMUCL 18e                    compiled        1.35

Note that this example isn't particularly fair.
(Continue reading)

Peter Graves | 1 Dec 2003 05:14

0.20.2.4

Tonight's development snapshot (j 0.20.2.4, ABL 0.0.3.4) is up:

    http://armedbear.org/j.zip          (source)
    http://armedbear.org/j-jar.zip      (just j.jar)

A few editor bugfixes:

- J now recovers gracefully if an OutOfMemoryError occurs while loading
  a remote file via ssh/scp.

- electricCloseBrace now does the right thing when a region is marked.

- The selected item in the sidebar buffer list (or sidebar tag list or
  tree) is now reset correctly in all (or at least more) situations
  when keyboard focus leaves the pane.

- wrapComment no longer suffers a StringIndexOutOfBoundsException if
  the line to be wrapped does not in fact contain a wrappable comment.

Thanks for your support.

-Peter

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
Peter Graves | 1 Dec 2003 07:05

0.20.2.5

Tonight's bonus development snapshot is up:

    http://armedbear.org/j.zip          (source)
    http://armedbear.org/j-jar.zip      (just j.jar)

The only difference between this snapshot and 0.20.2.4, besides the
version number, is that in this snapshot the Ant-based build system is
not broken.

Or at least I hope it's not.

By way of background, I should mention that j has two build systems,
one based on configure/make and one based on Ant.

I'm not sure I like either one, but these days I mostly use the
configure/make one myself.

The Ant build system is still there, and I make a token effort to keep
it working, because I assume there are some users of Windows out there
who might want to build j from source but are put off by the idea of
installing Cygwin to get a configure/make-capable environment. (And for
that matter, it's been a long time since I've tested the Cygwin support
in the configure/make build system.)

If you're on Linux, you're probably better off with configure/make
rather than Ant, since that's what I use and I'm more likely to notice
if it breaks.

If you find that your favorite build system is broken on a platform
you care about, please let me know the symptoms, and I'll try to fix
(Continue reading)

Eric Marsden | 1 Dec 2003 11:53
Picon
Picon
Favicon

Re: Re: ABL and GCJ

>>>>> "pg" == Peter Graves <peter <at> armedbear.org> writes:

  pg> For the more quantitatively inclined:

Here are some further performance results, from cl-bench. This
compares a current CMUCL snapshot to ABL running in gcj 3.3.2, on an
i686 running Linux. I run ABL (compiled from CVS this morning) with
the CL, SYS, EXT and PRECOMPILER packages jvm-compiled, as well as the
performance benchmarks.

On the next test (CTAK) abl is killed by the OOM, which means it has
an RSS greater than 500 MB. 

;; Function                     ABL           CMUCL     ratio
;; -----------------------------------------------------------
;; BROWSE                      11.115         0.60      18.5
;; DDERIV                      24.141         0.53      45.6
;; DERIV                       22.544         1.06      21.3
;; DESTRUCTIVE                 36.123         1.17      30.9
;; DIV2-TEST-1                 16.887         0.87      19.4
;; DIV2-TEST-2                 11.287         0.55      20.5
;; FFT                         24.823         0.21      118.2
;; FRPOLY/FIXNUM               0.336          0.57      0.58
;; FRPOLY/BIGNUM               0.237          1.51      0.16
;; FRPOLY/FLOAT                0.671          1.79      0.37
;; PUZZLE                      340.884        0.30      1136
;; TAK                         46.385         0.89      52.1

I'm not sure whether ABL is cheating on the FRPOLY tests.
So, it's hundreds of times slower only on certain tests. 
(Continue reading)

Eric Marsden | 1 Dec 2003 11:55
Picon
Picon
Favicon

Re: Re: ABL and GCJ

>>>>> "pg" == Peter Graves <peter <at> armedbear.org> writes:

  pg> With the new code, the gcj version of abl will look for boot.lisp and
  pg> friends in the directory they were in at the time of the build.

seems to work for me, thanks!

  ecm> Error: wrong type: (1 7 "execute") is not a number

  pg> So far I haven't seen any compilation errors like that. What function
  pg> was it trying to compile?

it was while compiling the cl-bench packages. I tried this again
yesterday and saw errors like

   "execute" is not of type list

and with ABL from this morning there are no longer any errors of this
form. 

--

-- 
Eric Marsden                          <URL:http://www.laas.fr/~emarsden/>

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
Peter Graves | 1 Dec 2003 17:23

Re: Re: ABL and GCJ

On Mon, 01 Dec 2003 at 11:53:42 +0100, Eric Marsden wrote:
> ;; Function                     ABL           CMUCL     ratio
> ;; -----------------------------------------------------------
> ;; BROWSE                      11.115         0.60      18.5
> ;; DDERIV                      24.141         0.53      45.6
> ;; DERIV                       22.544         1.06      21.3
> ;; DESTRUCTIVE                 36.123         1.17      30.9
> ;; DIV2-TEST-1                 16.887         0.87      19.4
> ;; DIV2-TEST-2                 11.287         0.55      20.5
> ;; FFT                         24.823         0.21      118.2
> ;; FRPOLY/FIXNUM               0.336          0.57      0.58
> ;; FRPOLY/BIGNUM               0.237          1.51      0.16
> ;; FRPOLY/FLOAT                0.671          1.79      0.37
> ;; PUZZLE                      340.884        0.30      1136
> ;; TAK                         46.385         0.89      52.1
>   
>
> I'm not sure whether ABL is cheating on the FRPOLY tests.

ABL is definitely cheating on the FRPOLY tests.

I've verified that ABL gets the right answer when running the
FRPOLY/FIXNUM test with nothing compiled, but gets the wrong answer if
you compile the CL-BENCH.GABRIEL package. The problem occurs with both
gcj and Sun Java. The test code must be running into a bug in the JVM
compiler.

It's easy to be really fast when you don't have to get the right
answer.

(Continue reading)

Doug McNaught | 2 Dec 2003 00:00

JAVA-OBJECT-P

I think we need a JAVA-OBJECT-P primitive, so user code can tell whether 
something is a wrapped Java object (aka org.armedbear.lisp.JavaObject). 
This would be mainly used by Lisp code that is working extensively
with objects created by existing Java librarie.

Unfortunately, I think this has to be done at the Java level--doing
(jinstance-of-p 'foo "java.lang.Object") throws an exception.

Peter, unless you object strongly or can think of a way of doing it
from Lisp, I'll see about coding it up in the next day or two.
Obviously it would go in the JAVA package.

-Doug

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
András Simon | 2 Dec 2003 08:13
Picon

Re: JAVA-OBJECT-P


On Mon, 1 Dec 2003, Doug McNaught wrote:

> I think we need a JAVA-OBJECT-P primitive, so user code can tell whether
> something is a wrapped Java object (aka org.armedbear.lisp.JavaObject).
> This would be mainly used by Lisp code that is working extensively
> with objects created by existing Java librarie.
>
> Unfortunately, I think this has to be done at the Java level--doing
> (jinstance-of-p 'foo "java.lang.Object") throws an exception.
>
> Peter, unless you object strongly or can think of a way of doing it
> from Lisp, I'll see about coding it up in the next day or two.
> Obviously it would go in the JAVA package.
>

Perhaps the proper way to do it would be to have a built-in class/type
JAVA-OBJECT, so that class-of/type-of/typep etc. did the right thing.

Andras

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
Peter Graves | 2 Dec 2003 09:11

Re: JAVA-OBJECT-P

On Tue, 2 Dec 2003 at 08:13:09 +0100, András_Simon wrote:
> On Mon, 1 Dec 2003, Doug McNaught wrote:
>
> > I think we need a JAVA-OBJECT-P primitive, so user code can tell whether
> > something is a wrapped Java object (aka org.armedbear.lisp.JavaObject).
> > This would be mainly used by Lisp code that is working extensively
> > with objects created by existing Java librarie.
> >
> > Unfortunately, I think this has to be done at the Java level--doing
> > (jinstance-of-p 'foo "java.lang.Object") throws an exception.
> >
> > Peter, unless you object strongly or can think of a way of doing it
> > from Lisp, I'll see about coding it up in the next day or two.
> > Obviously it would go in the JAVA package.
> >
>
> Perhaps the proper way to do it would be to have a built-in class/type
> JAVA-OBJECT, so that class-of/type-of/typep etc. did the right thing.

I have no objection at all to JAVA-OBJECT-P, and I like the idea of a
built-in class.

-Peter

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
(Continue reading)

András Simon | 3 Dec 2003 20:49
Picon

package bug?

Loading a file containing

(defpackage :test
  (:use "COMMON-LISP")
  (:export #:exported))

(in-package :test)

(with-open-file (f "/tmp/test-result.cl" :direction :output :if-exists :supersede)
  (format f "~s~%~s~%" 'exported 'not-exported))

produces

[simon <at> hugi src]$ cat /tmp/test-result.cl
TEST:EXPORTED
TEST::NOT-EXPORTED

I'm not sure this is a bug, but ABL certainly behaves differently from both ACL and LW, which put

EXPORTED
NOT-EXPORTED

in test-result.cl

Andras

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
(Continue reading)


Gmane