Lapis Benchmark Suite: Performance Report

Lapis v0.2.3 • Godot 4.8-beta2 • Linux 4.8-beta2
⚡ Release Progression: Tag 4.8-beta1 → 4.8-beta2 • +23.9% shift vs 39.7x baseline
View Detailed Diff →
Geometric Mean Speedup 49.2x Across 27 comparative benchmarks
Pure Compute Speedup 34.2x 10 numerical benchmarks
Engine Core Speedup 60.9x 17 engine API benchmarks
Comparison Groups 9 Grouped domain subsystems
Peak Speedup 2895.3x AStar2D
Lapis Benchmark Suite: Performance Comparison Execution time in milliseconds (shorter is faster) • Crystal Native vs GDScript AStar2D 0.06 ms (Crystal) 173.72 ms (GDScript) 2895.3x faster Base64 12.24 ms (Crystal) 163.75 ms (GDScript) 13.4x faster BinaryTrees 35.85 ms (Crystal) 1186.13 ms (GDScript) 33.1x faster Brainfuck 178.16 ms (Crystal) 19446.07 ms (GDScript) 109.1x faster CellularNoise 0.48 ms (Crystal) 59.11 ms (GDScript) 123.1x faster CompileTimes 10279.73 ms (Crystal) Native ConfigFileOps 0.08 ms (Crystal) 5.67 ms (GDScript) 70.9x faster DictionaryOps 28.13 ms (Crystal) 64.24 ms (GDScript) 2.3x faster ImageProcessing 4.08 ms (Crystal) 73.38 ms (GDScript) 18.0x faster JSON 9.78 ms (Crystal) 23.8 ms (GDScript) 2.4x faster Mandelbrot 18.0 ms (Crystal) 1256.59 ms (GDScript) 69.8x faster MaterialResources 1.87 ms (Crystal) 773.97 ms (GDScript) 413.9x faster Matmul 27.57 ms (Crystal) 1924.63 ms (GDScript) 69.8x faster NBody 3.9 ms (Crystal) 557.52 ms (GDScript) 143.0x faster NodeGroups 2.49 ms (Crystal) 13.96 ms (GDScript) 5.6x faster NodeLifecycle 4.63 ms (Crystal) 25.41 ms (GDScript) 5.5x faster PerlinNoise 0.41 ms (Crystal) 32.66 ms (GDScript) 79.7x faster Primes 17.97 ms (Crystal) 493.56 ms (GDScript) 27.5x faster ShaderCompilation 0.35 ms (Crystal) 79.68 ms (GDScript) 227.7x faster ShaderUniforms 0.14 ms (Crystal) 14.21 ms (GDScript) 101.5x faster Signals 2.57 ms (Crystal) 11.5 ms (GDScript) 4.5x faster SimplexNoise 0.21 ms (Crystal) 20.14 ms (GDScript) 95.9x faster SurfaceTool 0.12 ms (Crystal) 12.52 ms (GDScript) 104.3x faster TransformHierarchy 0.13 ms (Crystal) 85.86 ms (GDScript) 660.5x faster TransformMath 2.27 ms (Crystal) 49.52 ms (GDScript) 21.8x faster TreeTraversal 0.52 ms (Crystal) 9.33 ms (GDScript) 17.9x faster VectorMath2D 2.97 ms (Crystal) 130.73 ms (GDScript) 44.0x faster VisualShader 0.03 ms (Crystal) 5.08 ms (GDScript) 169.3x faster

Benchmark Comparison Groups

Side-by-side grouped evaluations measuring specific domain subsystems against baselines across languages and paradigms.

Filter Language Target:

BinaryTrees

GC pressure, bottom-up binary tree allocation & depth traversal • Baseline: Crystal
Compute
BinaryTrees • Latency Comparison (Lower is Faster) Baseline: Crystal • Interactive view mode: bar Crystal 35.85 ms 33.1x C++ 39.13 ms 30.3x Rust 39.92 ms 29.7x C# 380.4 ms 3.1x GDScript 1186.13 ms 1.0x
Language / Target Implementation Latency (ms) Speedup vs GDScript Ratio vs Crystal
Crystal Native LibGodot / LLVM O3 35.85 ms 33.1x faster 1.0x (Baseline)
C++ GCC / Clang -O3 39.13 ms 30.3x faster 1.09x slower
Rust rustc -O 39.92 ms 29.7x faster 1.11x slower
C# .NET 8 RyuJIT Release 380.4 ms 3.1x faster 11.11x slower
GDScript Godot VM Bytecode (Headless) 1186.13 ms 1.0x (Baseline) 33.1x slower than Crystal

ProceduralNoise

FastNoiseLite 2D Cellular Voronoi noise across 500x500 grid (250k samples) • Baseline: Crystal
EngineCore
ProceduralNoise • Latency Comparison (Lower is Faster) Baseline: Crystal • Interactive view mode: bar CellularNoise 0.5 ms (Release) 59.1 ms (Debug) 123.1x faster PerlinNoise 0.4 ms (Release) 32.7 ms (Debug) 79.7x faster SimplexNoise 0.2 ms (Release) 20.1 ms (Debug) 95.9x faster
Benchmark Description Crystal GDScript Speedup
CellularNoise FastNoiseLite 2D Cellular Voronoi noise across 500x500 grid (250k samples) 0.48 ms 59.11 ms 123.1x faster
PerlinNoise FastNoiseLite 2D Perlin noise across 500x500 grid (250k samples) 0.41 ms 32.66 ms 79.7x faster
SimplexNoise FastNoiseLite 3D Simplex Smooth noise across 100k samples 0.21 ms 20.14 ms 95.9x faster

CompileTime

Compilation latency and output binary size across Crystal, C++, C#, Rust (Debug vs Release) • Baseline: Crystal
Toolchain
CompileTime • Latency Comparison (Lower is Faster) Baseline: Crystal • Interactive view mode: bar CompileTimes 10279.73 ms
Benchmark Description Crystal GDScript Speedup
CompileTimes Compilation latency and output binary size across Crystal, C++, C#, Rust (Debug vs Release) 10279.73 ms - Native

Mandelbrot

2D coordinate escape-time fractal rasterization (500x500) • Baseline: Crystal
Compute
Mandelbrot • Latency Comparison (Lower is Faster) Baseline: Crystal • Interactive view mode: bar Crystal 18.0 ms 69.8x C++ 17.36 ms 72.4x Rust 18.64 ms 67.4x C# 178.94 ms 7.0x GDScript 1256.59 ms 1.0x
Language / Target Implementation Latency (ms) Speedup vs GDScript Ratio vs Crystal
Crystal Native LibGodot / LLVM O3 18.0 ms 69.8x faster 1.0x (Baseline)
C++ GCC / Clang -O3 17.36 ms 72.4x faster 1.04x faster
Rust rustc -O 18.64 ms 67.4x faster 1.03x slower
C# .NET 8 RyuJIT Release 178.94 ms 7.0x faster 10.0x slower
GDScript Godot VM Bytecode (Headless) 1256.59 ms 1.0x (Baseline) 69.8x slower than Crystal

MatrixMultiplication

Dense 2D matrix multiplication (N=300, float64) • Baseline: Crystal
Compute
MatrixMultiplication • Latency Comparison (Lower is Faster) Baseline: Crystal • Interactive view mode: bar Crystal 27.57 ms 69.8x C++ 22.81 ms 84.4x Rust 26.73 ms 72.0x C# 27.1 ms 71.0x GDScript 1924.63 ms 1.0x
Language / Target Implementation Latency (ms) Speedup vs GDScript Ratio vs Crystal
Crystal Native LibGodot / LLVM O3 27.57 ms 69.8x faster 1.0x (Baseline)
C++ GCC / Clang -O3 22.81 ms 84.4x faster 1.21x faster
Rust rustc -O 26.73 ms 72.0x faster 1.03x faster
C# .NET 8 RyuJIT Release 27.1 ms 71.0x faster 1.02x faster
GDScript Godot VM Bytecode (Headless) 1924.63 ms 1.0x (Baseline) 69.8x slower than Crystal

NBody

3D orbital dynamics physics integration (Velocity-Verlet, 50k steps) • Baseline: Crystal
Compute
NBody • Latency Comparison (Lower is Faster) Baseline: Crystal • Interactive view mode: bar Crystal 3.9 ms 143.0x C++ 3.36 ms 165.9x Rust 3.87 ms 144.1x C# 42.02 ms 13.3x GDScript 557.52 ms 1.0x
Language / Target Implementation Latency (ms) Speedup vs GDScript Ratio vs Crystal
Crystal Native LibGodot / LLVM O3 3.9 ms 143.0x faster 1.0x (Baseline)
C++ GCC / Clang -O3 3.36 ms 165.9x faster 1.16x faster
Rust rustc -O 3.87 ms 144.1x faster 1.01x faster
C# .NET 8 RyuJIT Release 42.02 ms 13.3x faster 11.11x slower
GDScript Godot VM Bytecode (Headless) 557.52 ms 1.0x (Baseline) 143.0x slower than Crystal

SceneGraph

20,000 nodes partitioned into 10 groups, group assignment & queries • Baseline: Crystal
EngineCore
SceneGraph • Latency Comparison (Lower is Faster) Baseline: Crystal • Interactive view mode: bar NodeGroups 2.5 ms (Release) 14.0 ms (Debug) 5.6x faster NodeLifecycle 4.6 ms (Release) 25.4 ms (Debug) 5.5x faster TreeTraversal 0.5 ms (Release) 9.3 ms (Debug) 17.9x faster
Benchmark Description Crystal GDScript Speedup
NodeGroups 20,000 nodes partitioned into 10 groups, group assignment & queries 2.49 ms 13.96 ms 5.6x faster
NodeLifecycle Node2D allocation, property mutation, add_child, remove_child, free (20k) 4.63 ms 25.41 ms 5.5x faster
TreeTraversal Scene tree recursive traversal & property inspection (20k nodes) 0.52 ms 9.33 ms 17.9x faster

PrimeSieve

Sieve of Atkin + Prefix Trie search (Limit=500k) • Baseline: Crystal
Compute
PrimeSieve • Latency Comparison (Lower is Faster) Baseline: Crystal • Interactive view mode: bar Crystal 17.97 ms 27.5x C++ 17.5 ms 28.2x Rust 16.68 ms 29.6x C# 67.63 ms 7.3x GDScript 493.56 ms 1.0x
Language / Target Implementation Latency (ms) Speedup vs GDScript Ratio vs Crystal
Crystal Native LibGodot / LLVM O3 17.97 ms 27.5x faster 1.0x (Baseline)
C++ GCC / Clang -O3 17.5 ms 28.2x faster 1.03x faster
Rust rustc -O 16.68 ms 29.6x faster 1.08x faster
C# .NET 8 RyuJIT Release 67.63 ms 7.3x faster 3.7x slower
GDScript Godot VM Bytecode (Headless) 493.56 ms 1.0x (Baseline) 27.5x slower than Crystal

Shaders

Shader compilation throughput across 1,000 permutations • Baseline: Crystal
EngineCore
Shaders • Latency Comparison (Lower is Faster) Baseline: Crystal • Interactive view mode: bar ShaderCompilation 0.4 ms (Release) 79.7 ms (Debug) 227.7x faster ShaderUniforms 0.1 ms (Release) 14.2 ms (Debug) 101.5x faster VisualShader 0.0 ms (Release) 5.1 ms (Debug) 169.3x faster
Benchmark Description Crystal GDScript Speedup
ShaderCompilation Shader compilation throughput across 1,000 permutations 0.35 ms 79.68 ms 227.7x faster
ShaderUniforms High-frequency uniform parameter dispatch (50k updates) 0.14 ms 14.21 ms 101.5x faster
VisualShader VisualShader node graph creation and connection (200 graphs) 0.03 ms 5.08 ms 169.3x faster

Compute Benchmarks

Benchmark Description Crystal GDScript Speedup
Base64 Base64 strict encode & decode loop (64 KiB, 100 iter) 12.24 ms 163.75 ms 13.4x faster
BinaryTrees GC pressure, bottom-up binary tree allocation & depth traversal 35.85 ms 1186.13 ms 33.1x faster
Brainfuck Brainfuck AST interpreter + dynamic tape (bench_quick.b) 178.16 ms 19446.07 ms 109.1x faster
JSON JSON parse & 3D coordinate aggregation (10k items) 9.78 ms 23.8 ms 2.4x faster
Mandelbrot 2D coordinate escape-time fractal rasterization (500x500) 18.0 ms 1256.59 ms 69.8x faster
Matmul Dense 2D matrix multiplication (N=300, float64) 27.57 ms 1924.63 ms 69.8x faster
NBody 3D orbital dynamics physics integration (Velocity-Verlet, 50k steps) 3.9 ms 557.52 ms 143.0x faster
Primes Sieve of Atkin + Prefix Trie search (Limit=500k) 17.97 ms 493.56 ms 27.5x faster
TransformMath Transform3D translations, rotations & Vector3 projections (200k ops) 2.27 ms 49.52 ms 21.8x faster
VectorMath2D Vector2 lerp, dot, distance, and normalization across 500k ops 2.97 ms 130.73 ms 44.0x faster

Engine Core & Node Benchmarks

Benchmark Description Crystal GDScript Speedup
AStar2D AStar2D pathfinding on 100x100 grid (10k points, 500 queries) 0.06 ms 173.72 ms 2895.3x faster
CellularNoise FastNoiseLite 2D Cellular Voronoi noise across 500x500 grid (250k samples) 0.48 ms 59.11 ms 123.1x faster
ConfigFileOps ConfigFile parsing, querying and encoding 1,000 section INI config 0.08 ms 5.67 ms 70.9x faster
DictionaryOps Godot Dictionary 50,000 insertions and random access lookups 28.13 ms 64.24 ms 2.3x faster
ImageProcessing 512x512 Image procedural pixel computation and gamma blending (262k px) 4.08 ms 73.38 ms 18.0x faster
MaterialResources StandardMaterial3D allocation, properties, duplication, refcounting (10k) 1.87 ms 773.97 ms 413.9x faster
NodeGroups 20,000 nodes partitioned into 10 groups, group assignment & queries 2.49 ms 13.96 ms 5.6x faster
NodeLifecycle Node2D allocation, property mutation, add_child, remove_child, free (20k) 4.63 ms 25.41 ms 5.5x faster
PerlinNoise FastNoiseLite 2D Perlin noise across 500x500 grid (250k samples) 0.41 ms 32.66 ms 79.7x faster
ShaderCompilation Shader compilation throughput across 1,000 permutations 0.35 ms 79.68 ms 227.7x faster
ShaderUniforms High-frequency uniform parameter dispatch (50k updates) 0.14 ms 14.21 ms 101.5x faster
Signals Signal connection, argument marshalling & dynamic emission (50k calls) 2.57 ms 11.5 ms 4.5x faster
SimplexNoise FastNoiseLite 3D Simplex Smooth noise across 100k samples 0.21 ms 20.14 ms 95.9x faster
SurfaceTool SurfaceTool procedural mesh generation with normals/UVs (10k triangles) 0.12 ms 12.52 ms 104.3x faster
TransformHierarchy 15,000 Node3D hierarchy transformations & global position resolution 0.13 ms 85.86 ms 660.5x faster
TreeTraversal Scene tree recursive traversal & property inspection (20k nodes) 0.52 ms 9.33 ms 17.9x faster
VisualShader VisualShader node graph creation and connection (200 graphs) 0.03 ms 5.08 ms 169.3x faster

Toolchain & Compilation Benchmarks

Benchmark Description Crystal GDScript Speedup
CompileTimes Compilation latency and output binary size across Crystal, C++, C#, Rust (Debug vs Release) 10279.73 ms - Native

Historical Benchmark Releases & Logs

Tag / Release Lapis Version Godot Version GeoMean Speedup Reports & Logs
4.8-beta2 v0.2.3 Godot 4.8-beta2 42.8x faster HTML Report • Raw XML
0.2.3 v0.2.3 Godot 4.8-beta2 42.8x faster HTML Report • Raw XML

Recorded Tag Comparisons: