Game Scripting Languages benchmarked

Related tags

Game scriptorium
Overview

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)
Comments
  • Catch exceptions in main()?

    Catch exceptions in main()?

    opened by elfring 2
  • Add LuaJIT with JIT turned off

    Add LuaJIT with JIT turned off

    LuaJIT running in interpreted mode should do quite well.

    Not every platform allows allocating executable memory, which is why interpreted runtimes are of interest.

    opened by cgbystrom 1
  • Update README URLs based on HTTP redirects

    Update README URLs based on HTTP redirects

    Created with https://github.com/dkhamsing/frankenstein

    GitHub Corrected URLs

    | Was | Now | | --- | --- | | https://github.com/dart-lang/fletch | https://github.com/dartino/sdk |

    HTTPS Corrected URLs

    | Was | Now | | --- | --- | | http://github.com/rxi/aria | https://github.com/rxi/aria | | http://oss.readytalk.com/avian/ | https://oss.readytalk.com/avian/ | | http://qore.org/downloads | https://qore.org/downloads | | http://robovm.com/ | https://robovm.com/ |

    Other Corrected URLs

    | Was | Now | | --- | --- | | https://code.google.com/p/jog-interpreter | https://code.google.com/p/jog-interpreter/ | | https://code.google.com/p/tart/ | https://code.google.com/archive/p/tart |

    opened by ReadmeCritic 0
  • Some years later - time to update?

    Some years later - time to update?

    I was looking for some kind of a comparison of scripting languages in terms of speed. The results here are quite old so I wondered if you would be willing to re-run the benchmarks and update the table?

    Kind regards, Ingwie

    opened by IngwiePhoenix 1
  • Please add ZetScript

    Please add ZetScript

    Hi r-lyeh,

    I would like to know whether is possible to eval ZetScript in your performance list test.

    Currently ZetScript links dinamically by default but I attached the static version below,

    zetscript-1.3.0_static.zip

    And the equivalent Fibonacci script for ZetScript is typed below,

    function fibR(n)
    {
        if (n < 2) { 
         	return n; 
        }
    
        return fibR(n-2)+fibR(n-1);
    }
    
    print("fib: " + (fibR(34)) );
    

    Cheers,

    opened by jespa007 0
  • Please split benchmark results

    Please split benchmark results

    As I understand your table right now the results of all benchmarks are shown combined. Could you split them up?

    Different scenarios might have different priorities. For example, you can image that most proper game scripts are about calling native functions as fast as possible and and general interpretation overhead, not arithmetic operators.

    opened by ghost 0
  • Add the list of existing benchmarks to the top of README

    Add the list of existing benchmarks to the top of README

    Currently it's not easy at all to find the benchmarks. Could you please restructure README such, that at the very beginning (at least before the table with results is presented) there is a list of all existing benchmarks, which are available for all the benchmarked languages? Also a direct URL pointing to the the tests/ directory is a must have.

    Without this the benchmarks do not have unfortunately any value for the reader :cry:.

    opened by dumblob 0
  • Update Jim Tcl for the next run

    Update Jim Tcl for the next run

    Jim Tcl is maintained, but not in @antirez's repository. The official GitHub mirror is at https://github.com/msteveb/jimtcl/.

    Also, please consider including Tcl 8.6, the main implementation of Tcl, in the next round of your benchmark. Tcl 8.x is a versatile scripting language with a rich C API and has been used in games before, including commercial titles. If you have any questions about embedding Tcl, please ask.

    opened by dbohdan 0
Owner
null
Mobile Studio tool integration with C# scripting for the Unity game engine.

Mobile Studio Package This project is a Unity package for integrating the Mobile Studio tool suite into game development workflows. This version of th

Arm Software 76 Dec 7, 2022
A scripting language created mainly for game engines

HCode Hammurabi's Code A scripting language created for the use in games and game engines. Currently supported features and roadmap Structs Functions

null 4 Oct 11, 2020
Dialogue scripting language for Unreal Engine

Supertalk Welcome to Supertalk! This is a simple dialogue scripting language for Unreal Engine created due to frustration with visual dialogue tree wo

Sam Bloomberg 41 Nov 18, 2022
python scripting engine for the gd editor

Python interpreter embedded into the game Geometry Dash, designed for helping people automate tasks for creating

camila 8 Feb 24, 2022
A gameboy emulator in several different languages

A gameboy emulator in several different languages

Shish 327 Dec 31, 2022
Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World.

OpenXRay OpenXRay is an improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World. S

null 2.2k Jan 1, 2023
Stealthy way to hijack the existing game process handle within the game launcher (currently supports Steam and Battle.net). Achieve external game process read/write with minimum footprint.

Launcher Abuser Stealthy way to hijack the existing game process handle within the game launcher (currently supports Steam and Battle.net). Achieve ex

Ricardo Nacif 80 Nov 25, 2022
Game Boy, Game Boy Color, and Game Boy Advanced Emulator

SkyEmu SkyEmu is low level cycle accurate GameBoy, GameBoy Color and Game Boy Advance emulator that I have been developing in my spare time. Its prima

Sky 321 Jan 4, 2023
A cycle-accurate Game Boy and Game Boy Color Emulator, with rewind feature.

Azayaka is a free and open-source Game Boy and Game Boy Color emulator written in C++. Features Cycle-Accurate emulation. Console based Debugg

Zach Collins 23 Dec 3, 2022
The Game Boy ROM of the Game Boy bitcoin miner!

game-boy-bitcoin-miner The Game Boy ROM of the Game Boy bitcoin miner! To build this, currently this patch needs to be applied to GBDK: https://gist.g

Ghidra Ninja 80 Dec 11, 2022
CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine

CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine. This engine has been designed with a cross-platform design in mind. Thanks to Vulkan API it delivers a next-gen experience with ray tracing to both Linux and Windows platforms

Jakub BiliΕ„ski 48 Dec 29, 2022
Ground Engine is an easy to use Game Engine for 3D Game Development written in C++

Ground Engine is an easy to use Game Engine Framework for 3D Game Development written in C++. It's currently under development and its creation will b

 PardCode 61 Dec 14, 2022
Minetest is an open source voxel game engine with easy modding and game creation

Minetest is an open source voxel game engine with easy modding and game creation

Minetest 8.3k Dec 29, 2022
A game made for the Game (Engineless) Jam using Raylib

Fastest Pizza Delivery A fun little 3D game made for the Game (Engineless) Jam. It is still is development but the basic gameplay is something l

Ryuzaki 2 Apr 3, 2022
SameBoy DX is a Qt-based interface of SameBoy, a free, highly accurate Game Boy and Game Boy Color emulator.

SameBoy DX SameBoy DX is a Qt-based interface of SameBoy, a free, highly accurate Game Boy and Game Boy Color emulator. Build requirements: CMake Pyth

Snowy 7 Oct 2, 2022
To recreate the board game Scotland yard and enable a single player to play the game by letting one of the roles being played by the computer based on written algorithm

Scotland Yard GAME OF SCOTLAND YARD This is a custom version of the classic board game, Scotland Yard .The game uses the London map used in the origin

Brshank 2 Nov 11, 2021
Ncurses based omok game, execute omok game in your terminal

omok_game execute omok game in your terminal Omok game played by two people. ν•œκ΅­μ–΄ 버전(korean version)

SunjungAn 1 Dec 3, 2022
Slender Man Returns is a game inspired by the original indie game Slender

Slender Man Returns is a game inspired by the original indie game Slender: The Eight Pages, but redesigned to run on the popular Unity game engine. Ported to PSVita. Original project by Rosario Terranova.

null 8 Jul 5, 2022
A Game Boy game that rewards you for playing it on several console models!

GB Corp. A Game Boy game for the Game Boy Competition 2021 by Dr. Ludos (2021) This is the source code, you can get a precompiled rom from here: https

Dr. Ludos 10 Sep 25, 2022