View Code? Open in Web Editor
NEW
This project forked from r-lyeh-archived/scriptorium
:scroll: Game Scripting Languages benchmarked
License: The Unlicense
C++ 15.25%
Batchfile 0.05%
Makefile 0.77%
Brainfuck 0.01%
C 72.71%
CMake 0.20%
QMake 0.01%
Assembly 0.74%
HTML 7.49%
JavaScript 0.28%
CSS 0.08%
ActionScript 0.01%
Shell 0.62%
Perl 0.07%
PHP 0.01%
Vim Script 0.03%
Yacc 0.22%
Lex 0.01%
Python 1.39%
C# 0.07%
scriptorium's Introduction
- Game Scripting Languages benchmarked.
- Using latest versions at the time of writing (Jul 2015)
- Total solutions evaluated: 50
Rank |
Language |
Flavor |
Time |
Relative Lua speed |
Score |
1 |
C |
vc |
0.074 s. |
|
1808 pt |
2 |
Lua |
luajit |
0.111 s. |
|
1203 pt |
3 |
Terra |
terra |
0.121 s. |
|
1107 pt |
4 |
C |
c4-jit |
0.136 s. |
|
986 pt |
5 |
C |
libtcc |
0.151 s. |
|
886 pt |
6 |
Pawn |
pawn-asm |
0.384 s. |
|
349 pt |
7 |
Lua |
luajit-nojit |
0.521 s. |
|
257 pt |
8 |
Pawn |
pawn |
0.719 s. |
|
186 pt |
9 |
TinyVM |
tinyvm |
0.786 s. |
|
170 pt |
10 |
Scheme |
chibi |
1.009 s. |
|
132 pt |
11 |
Neko |
nekovm |
1.104 s. |
|
121 pt |
12 |
Lua |
lua |
1.341 s. |
|
100 pt |
13 |
Ruby |
tinyrb(ist) |
1.441 s. |
|
93 pt |
14 |
GameMonkey |
gamemonkey |
1.691 s. |
|
79 pt |
15 |
Angelscript |
angelscript-jit |
1.859 s. |
|
72 pt |
16 |
Wren |
wren |
1.997 s. |
|
67 pt |
17 |
Lily |
lily |
2.005 s. |
|
66 pt |
18 |
Angelscript |
angelscript |
2.039 s. |
|
65 pt |
19 |
Ruby |
mruby |
2.098 s. |
|
63 pt |
20 |
Squirrel |
squirrel |
2.126 s. |
|
63 pt |
21 |
Scheme |
s7 |
2.136 s. |
|
62 pt |
22 |
C |
c4 |
2.538 s. |
|
52 pt |
23 |
Python |
micropython |
2.842 s. |
|
47 pt |
24 |
Dao |
dao |
2.876 s. |
|
46 pt |
25 |
QuakeC |
gmqcc |
3.060 s. |
|
43 pt |
26 |
ObjectScript |
objectscript |
3.108 s. |
|
43 pt |
27 |
SGScript |
sgscript |
4.620 s. |
|
29 pt |
28 |
Java |
Jog |
4.675 s. |
|
28 pt |
29 |
JetScript |
JetScript |
4.810 s. |
|
27 pt |
30 |
Lisp |
minilisp |
6.951 s. |
|
19 pt |
31 |
Lisp |
aria |
8.010 s. |
|
16 pt |
32 |
JavaScript |
duktape |
9.544 s. |
|
14 pt |
33 |
Tcl |
jim |
12.280 s. |
|
10 pt |
34 |
GML |
gml |
16.443 s. |
|
8 pt |
35 |
MiniScheme |
MiniScheme |
17.345 s. |
|
7 pt |
36 |
PSL |
psl |
17.645 s. |
|
7 pt |
37 |
Python |
tinypy(panda) |
21.799 s. |
|
6 pt |
38 |
Scheme |
s9 |
33.160 s. |
|
4 pt |
39 |
C |
picoC |
36.625 s. |
|
3 pt |
40 |
JX9 |
jx9 |
43.598 s. |
|
3 pt |
41 |
PHP |
ph7 |
46.029 s. |
|
2 pt |
42 |
JTC |
jtc |
47.021 s. |
|
2 pt |
43 |
JavaScript |
v7 |
51.940 s. |
|
2 pt |
44 |
Scheme |
tinyscheme |
65.398 s. |
|
2 pt |
45 |
Lisp |
paren |
72.901 s. |
|
1 pt |
46 |
Lisp |
lispy90 |
91.767 s. |
|
1 pt |
47 |
Tcl |
picol |
151.527 s. |
|
0 pt |
48 |
ChaiScript |
chaiscript |
175.038 s. |
|
0 pt |
49 |
JavaScript |
42tiny-js |
227.170 s. |
|
0 pt |
50 |
Tcl |
lil |
555.976 s. |
|
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.
- 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.
- 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
- 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)
- initial tests by Lewis Van Winkle (2009) (Public Domain)
- makefiles, bench code, compilation fixes & most tests put into public domain (@r-lyeh)