Skip to content
master
Switch branches/tags
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
c
Jul 26, 2015
Jul 10, 2015
Jul 10, 2015
gml
gml
Jul 15, 2015
Oct 2, 2015
Jul 28, 2015
Oct 28, 2015
jtc
Jul 10, 2015
jx9
Oct 2, 2015
Jul 10, 2015
Jan 28, 2016
lua
Jul 10, 2015
Jul 10, 2015
os
Oct 2, 2015
Jul 10, 2015
Oct 2, 2015
psl
Jul 10, 2015
Jul 14, 2015
Oct 2, 2015
Jul 14, 2015
Feb 1, 2016
Jul 10, 2015
tcl
Feb 1, 2016
Oct 28, 2015
Jul 27, 2015
Jul 10, 2015
Jul 10, 2015
May 24, 2016
Jan 28, 2016
Jul 28, 2015

Scriptorium 📜

  • Game Scripting Languages benchmarked.
  • Using latest versions at the time of writing (Jul 2015)
  • Total solutions evaluated: 50

Results

Rank Language Flavor Time Relative Lua speed Score
1 C vc 0.074 s. 100% 1808 pt
2 Lua luajit 0.111 s. 100% 1203 pt
3 Terra terra 0.121 s. 100% 1107 pt
4 C c4-jit 0.136 s. 100% 986 pt
5 C libtcc 0.151 s. 100% 886 pt
6 Pawn pawn-asm 0.384 s. 100% 349 pt
7 Lua luajit-nojit 0.521 s. 100% 257 pt
8 Pawn pawn 0.719 s. 100% 186 pt
9 TinyVM tinyvm 0.786 s. 100% 170 pt
10 Scheme chibi 1.009 s. 100% 132 pt
11 Neko nekovm 1.104 s. 100% 121 pt
12 Lua lua 1.341 s. 100% 100 pt
13 Ruby tinyrb(ist) 1.441 s. 93.0103% 93 pt
14 GameMonkey gamemonkey 1.691 s. 79.2907% 79 pt
15 Angelscript angelscript-jit 1.859 s. 72.1132% 72 pt
16 Wren wren 1.997 s. 67.1361% 67 pt
17 Lily lily 2.005 s. 66.8582% 66 pt
18 Angelscript angelscript 2.039 s. 65.7295% 65 pt
19 Ruby mruby 2.098 s. 63.893% 63 pt
20 Squirrel squirrel 2.126 s. 63.0622% 63 pt
21 Scheme s7 2.136 s. 62.7708% 62 pt
22 C c4 2.538 s. 52.8101% 52 pt
23 Python micropython 2.842 s. 47.1675% 47 pt
24 Dao dao 2.876 s. 46.6166% 46 pt
25 QuakeC gmqcc 3.060 s. 43.806% 43 pt
26 ObjectScript objectscript 3.108 s. 43.1278% 43 pt
27 SGScript sgscript 4.620 s. 29.0163% 29 pt
28 Java Jog 4.675 s. 28.672% 28 pt
29 JetScript JetScript 4.810 s. 27.8671% 27 pt
30 Lisp minilisp 6.951 s. 19.2855% 19 pt
31 Lisp aria 8.010 s. 16.7366% 16 pt
32 JavaScript duktape 9.544 s. 14.0463% 14 pt
33 Tcl jim 12.280 s. 10.9162% 10 pt
34 GML gml 16.443 s. 8.15268% 8 pt
35 MiniScheme MiniScheme 17.345 s. 7.72839% 7 pt
36 PSL psl 17.645 s. 7.59738% 7 pt
37 Python tinypy(panda) 21.799 s. 6.14937% 6 pt
38 Scheme s9 33.160 s. 4.04257% 4 pt
39 C picoC 36.625 s. 3.66016% 3 pt
40 JX9 jx9 43.598 s. 3.07476% 3 pt
41 PHP ph7 46.029 s. 2.91235% 2 pt
42 JTC jtc 47.021 s. 2.8509% 2 pt
43 JavaScript v7 51.940 s. 2.58089% 2 pt
44 Scheme tinyscheme 65.398 s. 2.04979% 2 pt
45 Lisp paren 72.901 s. 1.83883% 1 pt
46 Lisp lispy90 91.767 s. 1.46079% 1 pt
47 Tcl picol 151.527 s. 0.884674% 0 pt
48 ChaiScript chaiscript 175.038 s. 0.765845% 0 pt
49 JavaScript 42tiny-js 227.170 s. 0.590096% 0 pt
50 Tcl lil 555.976 s. 0.241111% 0 pt
  • AMD A10 3.8 GHz, 8 GiB, Windows 7 64bit.
  • Compiled on VS2015 RC if possible, VS2013 elsewhere.
  • Take it with a grain of salt.

Language requirements

  • must embed from C++.
  • must be self-contained (no BOOST, no LLVM backends).
  • must compile on vs2015 (or vs2013 at least).
  • must link statically.
  • must not require (heavy) makefiles/cygwin/build-systems to build.
  • must use jit/optimizations if available.

Test requirements

  • must compare fair between languages. for example:
    • must not use yield/coroutines on recursive fibonacci test.
    • must disable threading if possible (not all languages are thread-safe)
    • etc

Upcoming (soon)

  • creating a class to handle them all (relevant)
  • @todo {
  • add exe size
  • add iteration benchmarks
  • add string benchmarks
  • add script->native round trip
  • add native->script round trip
  • add memory consumption
  • add memory leaks
  • add time to set up
  • add final thoughts
  • also, create a score chart, based on:
    • small
    • clean
    • type (interpreted/bytecode/jit)
    • fast
    • containers
    • OO
    • closures
    • bindings
    • 32/64bit
    • threading
    • thread-safety
    • coroutines/greenlets
    • debug capabilities
    • zero-configuration based (drag-n-drop files on solution/project)
    • ...
  • }

To evaluate (someday... maybe)

License

  • initial tests by Lewis Van Winkle (2009) (Public Domain)
  • makefiles, bench code, compilation fixes & most tests put into public domain (@r-lyeh)