The Great Lisp Speed Challenge
The aim of this question is to get an overview about the relative speed of all possible Lisps on modern machines. The desired result is that the answers given enable me to build 4 tables with speed comparisons when closing the question:

    1. 32bit interpreted  
    2. 32bit compiled
    3. 64bit interpreted
    4. 64bit compiled

To keep things simple, one Lisp is defined as benchmark and all others are tested against this benchmark. 
[PicoLisp](http://picolisp.com/5000/!wiki?home) has been chosen as benchmark due to the following reasons:

 - It is not unlikely that PicoLisp holds the [performance crown](http://john.freml.in/), thus it makes sense to define PicoLisp speed as 1 (or 100pc).
 - PicoLisp is only interpreted, thus only one test has to be run on a system to get the benchmark performance (saving a little time and effort for the tester).
 -  PicoLisp is available on 32bit and 64bit platforms. 

You might be able to use your package manager to install PicoLisp on GNU/Linux, otherwise you can [download](http://software-lab.de/down.html) it and follow the [INSTALL](http://software-lab.de/INSTALL) instructions. Like other GNU/Linux apps, it can be run on MS Windows using [Cygwin](http://www.cygwin.com/).

Here is a step by step guide:

 1. Install PicoLisp on your system
 2. Copy the following PicoLisp code in a file and save it as 'fibo.l'

        (de fibo (N)
           (if (> 2 N)
              1
              (+ (fibo (dec N)) (fibo (- N 2))) ) )
        (fibo 35)
        
 3. Copy the following PicoLisp code in a file and save it as 'tst.l'

        ((de tst ()
           (mapcar
              (quote (X)
                 (cons
                    (car X)
                    (reverse (delete (car X) (cdr X))) ) )
              '((a b c a b c) (b c d b c d) (c d e c d e) (d e f d e f)) ) )
        (do 1000000 (tst))

 4. Translate the two code snippets to your favorite Lisp dialect and save them in files with apropriate extensions. For Emacs Lisp, e.g., you would replace _de_ with _defun_, _quote_ with _lambda_, _dec_ with _1-_ and _do_ with _dotimes_, check the parenthesis, and save the two files fibo.el and tst.el.  
 5. Open a shell and _cd_ to the directory with the test files. Run the following commands to get the system information:

         $ uname -a
         $ cat /proc/cpuinfo |grep "model name" | cut -d: -f2

 6. Run the benchmark tests:

        $ time pil fibo.l -bye
        $ time pil tst.l -bye

 7. Test your favorite Lisp, e.g. Emacs Lisp (interpreted and compiled):

        $ time emacs --no-site-file --script fibo.el
        $ emacs --no-site-file -batch -f batch-byte-compile fibo.el
        $ time emacs --no-site-file --script fibo.elc
  
        $ time emacs --no-site-file --script tst.el
        $ emacs --no-site-file -batch -f batch-byte-compile tst.el
        $ time emacs --no-site-file --script tst.elc      

Be fair, do only one run for each test (instead of many runs and then picking the best performance for your favorite Lisp) and report the first line (_real_) of the _time_ output.    
The Great Lisp Speed Challenge
===

The aim of this question is to get an overview about the relative speed of all possible Lisps on modern machines. The desired result is that the answers given enable me to build 4 tables with speed comparisons when closing the question:

    1. 32bit interpreted  
    2. 32bit compiled
    3. 64bit interpreted
    4. 64bit compiled

To keep things simple, one Lisp is defined as benchmark and all others are tested against this benchmark. 
[PicoLisp](http://picolisp.com/5000/!wiki?home) has been chosen as benchmark due to the following reasons:

 - It is not unlikely that PicoLisp holds the [performance crown](http://john.freml.in/), thus it makes sense to define PicoLisp speed as 1 (or 100pc).
 - PicoLisp is only interpreted, thus only one test has to be run on a system to get the benchmark performance (saving a little time and effort for the tester).
 -  PicoLisp is available on 32bit and 64bit platforms. 

You might be able to use your package manager to install PicoLisp on GNU/Linux, otherwise you can [download](http://software-lab.de/down.html) it and follow the [INSTALL](http://software-lab.de/INSTALL) instructions. Like other GNU/Linux apps, it can be run on MS Windows using [Cygwin](http://www.cygwin.com/).

Here is a step by step guide:

 1. Install PicoLisp on your system
 2. Copy the following PicoLisp code in a file and save it as 'fibo.l'

        (de fibo (N)
           (if (> 2 N)
              1
              (+ (fibo (dec N)) (fibo (- N 2))) ) )
        (fibo 35)
        
 3. Copy the following PicoLisp code in a file and save it as 'tst.l'

        ((de tst ()
           (mapcar
              (quote (X)
                 (cons
                    (car X)
                    (reverse (delete (car X) (cdr X))) ) )
              '((a b c a b c) (b c d b c d) (c d e c d e) (d e f d e f)) ) )
        (do 1000000 (tst))

 4. Translate the two code snippets to your favorite Lisp dialect and save them in files with apropriate extensions. For Emacs Lisp, e.g., you would replace _de_ with _defun_, _quote_ with _lambda_, _dec_ with _1-_ and _do_ with _dotimes_, check the parenthesis, and save the two files fibo.el and tst.el.  
 5. Open a shell and _cd_ to the directory with the test files. Run the following commands to get the system information:

         $ uname -a
         $ cat /proc/cpuinfo |grep "model name" | cut -d: -f2

 6. Run the benchmark tests:

        $ time pil fibo.l -bye
        $ time pil tst.l -bye

 7. Test your favorite Lisp, e.g. Emacs Lisp (interpreted and compiled):

        $ time emacs --no-site-file --script fibo.el
        $ emacs --no-site-file -batch -f batch-byte-compile fibo.el
        $ time emacs --no-site-file --script fibo.elc
  
        $ time emacs --no-site-file --script tst.el
        $ emacs --no-site-file -batch -f batch-byte-compile tst.el
        $ time emacs --no-site-file --script tst.elc      

Be fair, do only one run for each test (instead of many runs and then picking the best performance for your favorite Lisp) and report the first line (_real_) of the _time_ output.    