Skip to content

r-lyeh-archived/scriptorium

Folders and files

NameName
Last commit message
Last commit date
Jul 10, 2015
Jul 26, 2015
Jul 10, 2015
Jul 13, 2015
Jul 10, 2015
Jul 15, 2015
Oct 2, 2015
Jul 28, 2015
Oct 28, 2015
Jul 10, 2015
Oct 2, 2015
Jul 10, 2015
Jan 28, 2016
Jul 10, 2015
Jul 10, 2015
Oct 2, 2015
Jul 10, 2015
Oct 2, 2015
Jul 10, 2015
Jul 14, 2015
Oct 2, 2015
Jul 14, 2015
May 19, 2016
Feb 1, 2016
Jul 10, 2015
Feb 1, 2016
Oct 28, 2015
May 19, 2016
Jul 27, 2015
Jul 10, 2015
Jul 10, 2015
May 23, 2016
May 24, 2016
Jan 28, 2016
Jul 28, 2015
May 22, 2016

Repository files navigation

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)