Lisaac Shootout benchmark game

Lisaac in the Shootout benchmark game

MPG2 benchmark gcc-4.1.2 VS Lisaac 0.12

A mpeg2 decoder written in C was rigorously translated in Lisaac

C version Lisaac version Lisaac Rate (%)
Code line count 9888 6003 35.3% less
Binary size 76Kb 88Kb 13.64% more
Text size 51427b 53887b 4.78% more
Run time YUV format (s) 30.74 44.43 44.5% slower
Run time SIF format (s) 60.67 59.15 2.5% faster
Run time TGA format (s) 97.87 83.48 17.2% faster
Run time PPM format (s) 97.33 83.70 16.3% faster

Intel(R) Core(TM)2 Quad CPU @ 2.40GHz, 4Go DDR2

Lisaac 0.083 vs Lisaac 0.11 bench

Compiler Memory Lines (C) Binary size Time Rmqs
Lisaac 0.083 441 MB 387 030 2.6 MB 28 s (2)
Lisaac 0.11 (First step) 315 MB 404 451 3.2 MB 20 s (1)
Lisaac 0.11 (Next step) 310 MB 246 263 3.4 MB 16 s (1) (2)
Lisaac 0.083 -d 530 MB 570 680 6.5 MB 52 s (3)
Lisaac 0.11 -d 360 MB 736 546 10.9 MB 18 s (3)

(Athlon 2.4Ghz, 512 MB)

(1) Improvement of 20% of generated code.
(2) Improvement of 42% of compiler speed.
(3) Improvement of 65% of compiler speed (almost same performance as normal mode).

Bootstrap bench

version language lines* times memory
0.083 Lisaac 0.083 16.105 11 s 225 Mo
0.082 Lisaac 0.082 16.210 11 s 225 Mo
0.081 Lisaac 0.081 15.918 11 s 230 Mo
0.080 Lisaac 0.073 15.600 118 s 192 Mo
0.073 SmartEiffel 1.1 17.200 135 s 286 Mo

*lines of compiler without library

Lisaac is a hugh level language, so it explain 37,31% code line less than C program. Specialisations of the code made by the Lisaac compiler explain the 10% surplus of binary size. Data structure are heavier in Lisaac than C, but all memory is dynamically managed in Lisaac, so memory uses at runtime is about equal.