[gambit-list] Efficient Compilation of Tail Calls and Continuations to JavaScript

Marc Feeley feeley at iro.umontreal.ca
Sun Sep 9 08:56:39 EDT 2012


Eric Thivierge is in Copenhagen today, at the Scheme Workshop, presenting our latest paper:

  "Efficient Compilation of Tail Calls and Continuations to JavaScript"

You can get the paper on the Scheme Worshop web page: http://users-cs.au.dk/danvy/sfp12/programme-sfp12.html

It describes the implementation of tail calls and continuations in Gambit-JS and evaluates its performance.

Even if you are not specifically interested in the JavaScript back-end the paper may be interesting to read as it provides a brief explanation of the Gambit Virtual Machine (GVM) and compiler front-end, and a complete example of compilation from Scheme, to GVM, to JavaScript.

The performance evaluation (see attached tables) shows that the approach used by Gambit-JS is consistently faster than Scheme2JS and Spock.

Marc


  Execution times using V8 (Chrome 21.0.1180.89):

                 Gambit-JS        Scheme2JS             Spock
  fib35               .80        1.54    1.9x        2.40   3.0x
  nqueens12           .72         .76    1.1x        2.33   3.3x
  oddeven             .83        1.92    2.3x        5.62   6.8x
  ctak                .18       17.64   95.9x         .59   3.2x
  contfib30          1.17      106.01   90.9x        3.38   2.9x
  btsearch2000       1.35       25.40   18.8x        7.93   5.9x
  threads10          1.34       24.68   18.5x        4.40   3.3x


  Execution times using JagerMonkey (Firefox 15.0.1):

                 Gambit-JS        Scheme2JS             Spock
  fib35              1.07        7.66    7.2x       20.73  19.4x
  nqueens12          1.49        2.62    1.8x       12.97   8.7x
  oddeven            1.09        1.93    1.8x       33.91  31.1x
  ctak               1.25       30.38   24.3x        1.86   1.5x
  contfib30          5.88      156.79   26.7x       10.61   1.8x
  btsearch2000      11.19       27.16    2.4x       16.54   1.5x
  threads10          6.97       34.36    4.9x       22.11   3.2x


  Execution times using Nitro (Safari 6.0):

                 Gambit-JS        Scheme2JS             Spock
  fib35              1.32        6.53    4.9x       84.69  64.2x
  nqueens12          1.31        1.89    1.4x       45.15  34.4x
  oddeven            2.52        1.55     .6x      143.97  57.1x
  ctak                .30       52.88  177.4x        4.18  14.0x
  contfib30          1.60     2311.69 1443.0x       25.98  16.2x
  btsearch2000       3.46      102.98   29.7x       92.02  26.6x
  threads10          3.03       74.21   24.5x       74.88  24.7x




More information about the Gambit-list mailing list