本文件记录在本地以 Release 模式(-O3 -DNDEBUG)编译运行 bench_mark 的结果。覆盖 6 大类共 51 个 Lua 性能场景,每个场景均实现 C++ / Lua 5.4 / FakeLua TCC / FakeLua GCC / FakeLua INTERP(字节码解释器)横向对比。下面分析分成两块:解释器 vs Lua 5.4(本机,2026-09-16)和 GCC JIT vs Lua / C++(上一台机器,2026-08-14)。
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DFAKELUA_BUILD_BENCHMARKS=ON
cmake --build build --target bench_mark --parallel
# 只跑 Lua 5.4 与字节码解释器:
build/bin/bench_mark --benchmark_filter='BM_Lua_|BM_FakeLua_.*_INTERP' \
--benchmark_repetitions=1 --benchmark_report_aggregates_only=true
# 全量(C++ / Lua / TCC / GCC / INTERP):
build/bin/bench_mark --benchmark_repetitions=1 --benchmark_report_aggregates_only=true
字节码 VM(JIT_INTERP):8 字节 Inst、GNU computed-goto 派发、Lua 5.4 风格整数 FORPREP/FORLOOP 倒计数、就地写回 ADD。生产路径仍是 JIT_GCC,不是解释器。
-O3 -DNDEBUG),GCC 16.2.0debug_mode=false(初始化仍会编 TCC/GCC;计时路径是 Call(..., JIT_INTERP, ...))build/bin/bench_mark绝对耗时强依赖于机器与编译器版本,跨环境不可比。INTERP vs Lua = Lua CPU 时间 / INTERP CPU 时间(>1 表示解释器更快)。INTERP / Lua 耗时 列是 INTERP / Lua(解释器相对 Lua 慢几倍)。只有本节表内的比值有意义,不要和下面 2026-08-14 的 GCC 表混比。
各场景取最大参数:
| 场景 | 参数 | INTERP vs Lua | INTERP / Lua 耗时 | 备注 |
|---|---|---|---|---|
| Fibonacci | n=32 | 0.13x | 7.6x | 递归 CALL;Lua 单次调用便宜得多 |
| GCD | 2147483647/1073741823 | 0.29x | 3.4x | 函数体极小,派发+装箱主导 |
| PowMod | 1234567/7654321/1e9+7 | 0.56x | 1.8x | |
| Sum | n=5M | 0.69x | 1.5x | 最接近的数值循环(就地 ADD + 倒计数 FORLOOP) |
| BubbleSort | n=200 | 0.29x | 3.4x | 表下标读写,无 array part |
| Sieve | n=5000 | 0.30x | 3.3x | |
| BinarySearch | n=1000 | 0.33x | 3.1x | |
| FastPow | 1234567/7654321/1e9+7 | 0.48x | 2.1x | |
| Popcount | n=100K | 0.33x | 3.0x | |
| InsertionSort | n=200 | 0.22x | 4.5x | |
| MatMul | 3×3 | 0.51x | 1.9x | |
| Vector3 | n=1M | 0.29x | 3.5x | 纯哈希表 vs Lua array part |
| FloatPoly | n=1M | 0.77x | 1.3x | 紧浮点循环,接近 Sum |
| 场景 | 参数 | INTERP vs Lua | INTERP / Lua 耗时 | 备注 |
|---|---|---|---|---|
| StringLen | n=10K | 2.3x | 0.44x | 工作在 C(string.len),解释器更快 |
| StringSub | n=10K | 1.86x | 0.54x | |
| StringRep | n=1000 | 1.08x | 0.93x | 基本持平 |
| StringReverse | n=10K | 1.13x | 0.89x | |
| StringLower | n=10K | 6.2x | 0.16x | C 原生 string.lower |
| StringUpper | n=10K | 6.1x | 0.16x | 同上 |
| StringByte | n=1000 | 0.77x | 1.3x | |
| StringChar | n=500 | 0.44x | 2.3x | |
| StringFormat | n=500 | 0.78x | 1.3x | |
| StringFind | n=10K | 1.23x | 0.82x | 普通子串 |
| StringGsub | n=1000 | 0.31x | 3.2x | ECMAScript Boost.Regex |
| ToNumber | n=1 | 0.34x | 2.9x | 单次 Call() + 装箱 |
| ToString | n=500 | 0.74x | 1.4x | |
| StringFindPattern | n=1000 | 0.25x | 4.0x | ECMAScript 正则 |
| StringGmatch | n=1000 | 0.55x | 1.8x | ECMAScript 正则 |
| 场景 | 参数 | INTERP vs Lua | INTERP / Lua 耗时 | 备注 |
|---|---|---|---|---|
| TableInsert | n=5K | 0.29x | 3.5x | 无 array part |
| TableRemove | n=5K | 0.41x | 2.4x | |
| TableConcat | n=1000 | 1.05x | 0.95x | 持平(C 拼接) |
| TablePack | n=1 | 1.12x | 0.90x | |
| TableMove | n=5K | 0.38x | 2.6x | |
| TableSort | n=1000 | 1.87x | 0.54x | C table.sort |
| TableCreate | n=5K | 0.30x | 3.3x | |
| HashInsert | n=1000 | 1.33x | 0.75x | arena vs Lua GC |
| HashLookup | n=1000 | 1.13x | 0.89x | |
| NestedTable | n=10K | 0.25x | 4.0x | 反复 GETTABLE |
| 场景 | 参数 | INTERP vs Lua | INTERP / Lua 耗时 | 备注 |
|---|---|---|---|---|
| EmptyCall | n=100K | 0.13x | 7.8x | 每次 CallByName / 进解释器 |
| Recursion | n=25 | 0.17x | 6.0x | 同 Fibonacci |
| Variadic | n=1 | 0.19x | 5.2x | select / 变参 |
| MultiReturn | n=10K | 0.18x | 5.6x | |
| Closure | n=1000 | 0.36x | 2.7x | |
| TailRecursion | n=5K | 0.03x | 34x | 无 TCO,真 C 递归(需 ulimit -s unlimited) |
| 场景 | 参数 | INTERP vs Lua | INTERP / Lua 耗时 | 备注 |
|---|---|---|---|---|
| TableChurn | n=1000 | 2.2x | 0.45x | arena,无 GC |
| StringChurn | n=1000 | 1.40x | 0.71x | |
| MixedAlloc | n=1000 | 1.72x | 0.58x |
| 场景 | 参数 | INTERP vs Lua | INTERP / Lua 耗时 | 备注 |
|---|---|---|---|---|
| MathTrig (sin+cos) | n=100K | 0.49x | 2.0x | 原生 math + 解释器循环 |
| MathSqrt | n=100K | 0.33x | 3.1x | |
| MathExpLog | n=100K | 0.42x | 2.4x | |
| MathMinMax | n=100K | 0.43x | 2.3x |
紧整数/浮点循环最接近 Lua:Sum n=5M 是 Lua 的 1.5 倍时间,FloatPoly n=1M 是 1.3 倍。剩下主要是带标签的 CVar 拷贝和每次寄存器读写的 boxes[] 检查。
调用密集大约慢 6–8 倍:Fibonacci / Recursion / EmptyCall。Lua 的调用是一条 VM 指令;FakeLua INTERP 每次都重新进入 Call() / CallByName 并装箱参数。
尾递归是离群点(34 倍):Lua 5.4 把 return f(...) 收成循环。INTERP 没有;n=5000 是 5000 层 C 栈(默认 8 MiB 会溢出)。
没有 array part 的表循环大约慢 3–4 倍(BubbleSort、Vector3、TableInsert、NestedTable)。哈希-only 的 VarTable 对上 Lua 的数组部分。
落到 C 标准库的工作可以快过 Lua:string.lower/upper 6.2 倍、string.len 2.3 倍、table.sort 1.9 倍、TableChurn 2.2 倍(arena)。操作码循环不是瓶颈时,原生辅助函数加上无 GC 分配会赢。
正则仍然更慢(Gsub 为 Lua 时间的 3.2 倍,FindPattern 4.0 倍):走 ECMAScript Boost.Regex,不是 Lua pattern——和 GCC JIT 同一取舍。
下面表格来自另一次、另一台机器的运行(AMD EPYC 7K62,GCC 15.1.0),不能和上面的 INTERP 数字混比。GCC vs Lua 表示 FakeLua GCC 相对 Lua 5.4 的加速倍数(>1 表示 GCC JIT 更快);GCC vs C++ 表示 FakeLua GCC 与手写 C++ 的耗时比值(<1 表示 FakeLua 更快)。
-O3 -DNDEBUG),GCC 15.1.0debug_mode=false,GCC -O3 优化)build/bin/bench_markC++ 参照实现在部分场景会被编译器整体折叠(见下文标注),此时 GCC vs C++ 一列无参考价值。
| 场景 | 参数 | GCC vs Lua | GCC vs C++ | 备注 |
|---|---|---|---|---|
| Fibonacci | n=32 | 36.6x | 0.13 | 数值特化,接近 C++ |
| GCD | 2147483647/1073741823 | 0.45x | 10.8 | 单次调用仅约 0.4 µs,被调用开销主导 |
| PowMod | 1234567/7654321/1e9+7 | 1.7x | 2.56 | |
| Sum | n=5M | 30.4x | 0.06 | GCC 向量化,远快于 C++ |
| BubbleSort | n=200 | 1.9x | 2.80 | 表下标读写拖累 |
| Sieve | n=5000 | 1.8x | 2.68 | |
| BinarySearch | n=1000 | 3.7x | 2.40 | |
| FastPow | 1234567/7654321/1e9+7 | 1.6x | 2.45 | |
| Popcount | n=100K | 37.3x | 0.12 | 位运算极致优化 |
| InsertionSort | n=200 | 2.6x | 2.92 | |
| MatMul | 3×3 | 2.9x | 5.10 | |
| Vector3 | n=1M | 4.8x | 5.85 | 表特化为结构体,指针偏移 |
| FloatPoly | n=1M | 34.9x | 0.49 | 浮点特化,GCC 2x 快于 C++ |
| 场景 | 参数 | GCC vs Lua | GCC vs C++ | 备注 |
|---|---|---|---|---|
| StringLen | n=10K | 1.8x | 67.3 | |
| StringSub | n=10K | 1.3x | 6.15 | |
| StringRep | n=1000 | 1.1x | 0.16 | CGen FlStringRep 内联 |
| StringReverse | n=10K | 1.7x | 0.26 | CGen FlStringReverse 内联 |
| StringLower | n=10K | 6.1x | 0.02 | CGen 内联 + ASCII 单遍 |
| StringUpper | n=10K | 5.0x | 0.02 | 同上 |
| StringByte | n=1000 | 1.0x | 37.7 | |
| StringChar | n=500 | 1.0x | 10.6 | |
| StringFormat | n=500 | 1.8x | 2.71 | 常量 "%d" → FlFormatInt |
| StringFind | n=10K | 0.85x | 19.2 | plain 子串查找(FlStringFindPlain 内联,但仍有调用开销) |
| StringGsub | n=1000 | 0.06x | 38.1 | ECMAScript 正则(见下) |
| ToNumber | n=1 | 0.53x | 5.65 | CGen FlTonumber 十进制整数内联解析(同一输入 "1234567890") |
| ToString | n=500 | 0.74x | 0.01 | INT → FlFormatInt |
| StringFindPattern | n=1000 | 0.12x | 39.6 | ECMAScript 正则;已加编译缓存 |
| StringGmatch | n=1000 | 0.21x | 23.3 | ECMAScript 正则;已加编译缓存 |
关于正则比 Lua 慢:FakeLua 的
string.find/match/gmatch/gsub走的是 ECMAScript Boost.Regex(已做进程级编译缓存),能力强于 Lua 5.4 自带的 pattern(lookahead、完整字符类、非贪婪等)。因此正则场景慢于 Lua(当前约 0.06~0.21x)可以接受,属于能力换性能;后续若要追平 Lua,方向是另做 Lua pattern 引擎,而不是继续抠 Boost.Regex。脚本统一用[0-9]+(在 Lua pattern 与 ECMAScript 正则中语义一致)。
| 场景 | 参数 | GCC vs Lua | GCC vs C++ | 备注 |
|---|---|---|---|---|
| TableInsert | n=5K | 4.0x | 4.87 | |
| TableRemove | n=5K | 3.2x | 2.99 | |
| TableConcat | n=1000 | 1.0x | 4.16 | arena 一次写入 |
| TablePack | n=1 | 1.9x | 157 | |
| TableMove | n=5K | 1.0x | 2.84 | CGen FlTableMove + 空表预扩容 |
| TableSort | n=1000 | 1.2x | 4.74 | |
| TableCreate | n=5K | 1.1x | 2.20 | |
| HashInsert | n=1000 | 2.0x | 0.88 | |
| HashLookup | n=1000 | 1.9x | 0.45 | |
| NestedTable | n=10K | 3.4x | 1.39 | 表层指针偏移遍历 |
| 场景 | 参数 | GCC vs Lua | GCC vs C++ | 备注 |
|---|---|---|---|---|
| EmptyCall | n=100K | 14.1x | 61561 | C++ 内联为 0 |
| Recursion | n=25 | 42.9x | 0.13 | 数值特化 |
| Variadic | n=1 | 0.91x | 75.4 | vararg 构建开销大 |
| MultiReturn | n=10K | 23.3x | 0.46 | |
| Closure | n=1000 | 2.1x | 19.4 | |
| TailRecursion | n=5K | 107.5x | 0.07 | 尾调用转循环+向量化 |
| 场景 | 参数 | GCC vs Lua | GCC vs C++ | 备注 |
|---|---|---|---|---|
| TableChurn | n=1000 | 9.3x | 1.24 | 内存池分配器优势 |
| StringChurn | n=1000 | 2.2x | 1.47 | 字符串分配是弱项 |
| MixedAlloc | n=1000 | 2.3x | 1.68 |
| 场景 | 参数 | GCC vs Lua | GCC vs C++ | 备注 |
|---|---|---|---|---|
| MathTrig (sin+cos) | n=100K | 5.8x | 0.87 | 接近 C++ 原生速度 |
| MathSqrt | n=100K | 22.3x | 0.48 | GCC 2x 快于 C++ |
| MathExpLog | n=100K | 4.3x | 0.87 | |
| MathMinMax | n=100K | 10.4x | 0.90 |
纯数值场景全面领先 Lua 5.4 并接近手写 C++:Fibonacci 36.6x、TailRecursion 107.5x、Recursion 42.9x、FloatPoly 34.9x、Popcount 37.3x、Sum 30.4x。数值特化让这些函数生成的 C 代码与手写版本几乎一致,剩下的交给 GCC -O3。
math 库四项全部快于 Lua(4.3x~22.3x),sin/cos/sqrt 接近 C++ 原生速度。
string 标准库函数大多快于 Lua:lower/upper 5-6x、format 1.8x、rep 1.1x、reverse 1.7x,均通过 CGen 内联(FlStringLower/Upper、FlFormatInt、FlStringRep、FlStringReverse)避免 FakeluaCallByName 的调用开销。当前仅 StringFind (plain) 0.85x 略慢于 Lua,剩余差距为单次调用派发开销。
表操作整体有优势:table.insert 4.0x、remove 3.2x、sort 1.2x 快于 Lua,move / concat 与 Lua 基本持平。VarTable 缓存连续整数键前缀长度使 #t 为 O(1),宿主侧与 JIT 侧共用同一套哈希/桶布局。
arena 分配器在表频繁创建场景优势明显:TableChurn 快于 Lua 9.3x——无 GC、批量释放。
正则场景慢于 Lua 可接受(Gsub 0.06x、FindPattern 0.12x、Gmatch 0.21x):使用更强的 ECMAScript Boost.Regex(非 Lua pattern),已加编译缓存;能力不同,不作为追平目标。
剩余慢项为调用派发开销主导:GCD(0.45x)、ToNumber(0.53x)、ToString(0.74x)、Variadic(0.91x)函数体极小(< 1 µs),JIT 的 CVar 装箱/拆箱与调用约定开销占比大,非运算本身慢。需跨函数内联或调用约定优化才能追平。
说明:ToNumber 的 bench 两侧解析同一输入字符串
"1234567890"。剩余差距主要来自单次Call()派发与字符串装箱常数开销,非解析本身。
过滤:BM_Lua_|BM_FakeLua_.*_INTERP。上面 INTERP vs Lua 表用的是 CPU 时间。
Starting benchmarks...
2026-09-16T15:48:38+08:00
Running ./bin/bench_mark
Run on (16 X 2000 MHz CPU s)
CPU Caches:
L1 Data 64 KiB (x16)
L1 Instruction 64 KiB (x16)
L2 Unified 512 KiB (x16)
L3 Unified 65536 KiB (x2)
***WARNING*** ASLR is enabled, the results may have unreproducible noise in them.
----------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------
BM_Lua_Fibonacci/20 1144569 ns 1084586 ns 637
BM_Lua_Fibonacci/25 13283206 ns 12397758 ns 57
BM_Lua_Fibonacci/30 150373384 ns 136381787 ns 5
BM_Lua_Fibonacci/32 334257089 ns 334253452 ns 2
BM_FakeLua_Fibonacci_INTERP/20 8578088 ns 8577897 ns 81
BM_FakeLua_Fibonacci_INTERP/25 89749845 ns 89746764 ns 8
BM_FakeLua_Fibonacci_INTERP/30 975132570 ns 975108155 ns 1
BM_FakeLua_Fibonacci_INTERP/32 2552108645 ns 2552008862 ns 1
BM_Lua_GCD/832040/514229 556 ns 556 ns 1290670
BM_Lua_GCD/123456789/987654321 149 ns 149 ns 4642582
BM_Lua_GCD/2147483647/1073741823 134 ns 134 ns 5272710
BM_FakeLua_GCD_INTERP/832040/514229 1788 ns 1788 ns 407229
BM_FakeLua_GCD_INTERP/123456789/987654321 518 ns 518 ns 1176854
BM_FakeLua_GCD_INTERP/2147483647/1073741823 460 ns 460 ns 1597461
BM_Lua_PowMod/2/1000/1000000007 699 ns 699 ns 990032
BM_Lua_PowMod/7/1000000/1000000007 1210 ns 1210 ns 590702
BM_Lua_PowMod/1234567/7654321/1000000007 1526 ns 1526 ns 450278
BM_FakeLua_PowMod_INTERP/2/1000/1000000007 1394 ns 1394 ns 504574
BM_FakeLua_PowMod_INTERP/7/1000000/1000000007 2395 ns 2395 ns 299151
BM_FakeLua_PowMod_INTERP/1234567/7654321/1000000007 2714 ns 2713 ns 257497
BM_Lua_Sum/10000 68382 ns 68378 ns 10435
BM_Lua_Sum/100000 690733 ns 690725 ns 987
BM_Lua_Sum/1000000 6726799 ns 6726654 ns 104
BM_Lua_Sum/5000000 33570042 ns 33568361 ns 21
BM_FakeLua_Sum_INTERP/10000 98246 ns 98242 ns 7088
BM_FakeLua_Sum_INTERP/100000 975815 ns 975789 ns 719
BM_FakeLua_Sum_INTERP/1000000 9770269 ns 9769755 ns 72
BM_FakeLua_Sum_INTERP/5000000 48913989 ns 48914112 ns 14
BM_Lua_BubbleSort/50 97623 ns 97619 ns 7161
BM_Lua_BubbleSort/100 399558 ns 399543 ns 1844
BM_Lua_BubbleSort/200 1529475 ns 1529435 ns 440
BM_FakeLua_BubbleSort_INTERP/50 333897 ns 333884 ns 2106
BM_FakeLua_BubbleSort_INTERP/100 1349297 ns 1349251 ns 532
BM_FakeLua_BubbleSort_INTERP/200 5262565 ns 5262498 ns 132
BM_Lua_Sieve/100 9456 ns 9456 ns 74524
BM_Lua_Sieve/500 36011 ns 36011 ns 19372
BM_Lua_Sieve/1000 72348 ns 72345 ns 9478
BM_Lua_Sieve/5000 324762 ns 324745 ns 2091
BM_FakeLua_Sieve_INTERP/100 17545 ns 17544 ns 40212
BM_FakeLua_Sieve_INTERP/500 89880 ns 89879 ns 7841
BM_FakeLua_Sieve_INTERP/1000 192069 ns 192069 ns 3874
BM_FakeLua_Sieve_INTERP/5000 1070652 ns 1070611 ns 654
BM_Lua_BinarySearch/100 41313 ns 41312 ns 17030
BM_Lua_BinarySearch/500 282204 ns 282205 ns 2473
BM_Lua_BinarySearch/1000 636610 ns 636602 ns 1108
BM_FakeLua_BinarySearch_INTERP/100 124217 ns 124214 ns 5632
BM_FakeLua_BinarySearch_INTERP/500 863565 ns 863516 ns 811
BM_FakeLua_BinarySearch_INTERP/1000 1947828 ns 1947729 ns 361
BM_Lua_FastPow/2/1000/1000000007 704 ns 704 ns 992443
BM_Lua_FastPow/7/1000000/1000000007 1103 ns 1103 ns 638242
BM_Lua_FastPow/1234567/7654321/1000000007 1462 ns 1462 ns 479726
BM_FakeLua_FastPow_INTERP/2/1000/1000000007 1523 ns 1523 ns 462710
BM_FakeLua_FastPow_INTERP/7/1000000/1000000007 2578 ns 2578 ns 283648
BM_FakeLua_FastPow_INTERP/1234567/7654321/1000000007 3051 ns 3050 ns 231470
BM_Lua_Popcount/1000 118658 ns 118656 ns 5883
BM_Lua_Popcount/10000 1471087 ns 1471053 ns 475
BM_Lua_Popcount/100000 17968504 ns 17967236 ns 39
BM_FakeLua_Popcount_INTERP/1000 343823 ns 343819 ns 2028
BM_FakeLua_Popcount_INTERP/10000 4310395 ns 4309845 ns 162
BM_FakeLua_Popcount_INTERP/100000 53686039 ns 53683637 ns 13
BM_Lua_InsertionSort/50 49325 ns 49323 ns 13744
BM_Lua_InsertionSort/100 180948 ns 180941 ns 3869
BM_Lua_InsertionSort/200 705938 ns 705929 ns 989
BM_FakeLua_InsertionSort_INTERP/50 207825 ns 207820 ns 3366
BM_FakeLua_InsertionSort_INTERP/100 804500 ns 804489 ns 877
BM_FakeLua_InsertionSort_INTERP/200 3155980 ns 3155957 ns 221
BM_Lua_MatMul 4416 ns 4416 ns 158495
BM_FakeLua_MatMul_INTERP 8596 ns 8596 ns 81727
BM_Lua_Vector3/10000 1709644 ns 1709608 ns 425
BM_Lua_Vector3/100000 17277215 ns 17276556 ns 41
BM_Lua_Vector3/1000000 167336192 ns 167336712 ns 4
BM_FakeLua_Vector3_INTERP/10000 5870958 ns 5870569 ns 120
BM_FakeLua_Vector3_INTERP/100000 59038871 ns 59037918 ns 12
BM_FakeLua_Vector3_INTERP/1000000 583587155 ns 583577824 ns 1
BM_Lua_FloatPoly/1000000 92155439 ns 92148782 ns 6
BM_FakeLua_FloatPoly_INTERP/1000000 119274266 ns 119273134 ns 6
BM_Lua_EmptyCall/10000 410740 ns 410735 ns 1715
BM_Lua_EmptyCall/100000 4115022 ns 4114857 ns 163
BM_FakeLua_EmptyCall_INTERP/10000 3225408 ns 3225336 ns 217
BM_FakeLua_EmptyCall_INTERP/100000 32207058 ns 32207147 ns 22
BM_Lua_Recursion/10 10530 ns 10530 ns 66500
BM_Lua_Recursion/20 1285968 ns 1285954 ns 548
BM_Lua_Recursion/25 14696263 ns 14696145 ns 49
BM_FakeLua_Recursion_INTERP/10 67874 ns 67869 ns 10328
BM_FakeLua_Recursion_INTERP/20 8065164 ns 8064800 ns 82
BM_FakeLua_Recursion_INTERP/25 88200150 ns 88200363 ns 8
BM_Lua_Variadic/1 548 ns 548 ns 1271307
BM_FakeLua_Variadic_INTERP/1 2825 ns 2825 ns 250154
BM_Lua_MultiReturn/1000 61903 ns 61903 ns 11129
BM_Lua_MultiReturn/10000 591379 ns 591332 ns 1169
BM_FakeLua_MultiReturn_INTERP/1000 329144 ns 329132 ns 2145
BM_FakeLua_MultiReturn_INTERP/10000 3290976 ns 3290938 ns 213
BM_Lua_Closure/100 24524 ns 24522 ns 28867
BM_Lua_Closure/1000 244847 ns 244544 ns 2871
BM_FakeLua_Closure_INTERP/100 68483 ns 68479 ns 10128
BM_FakeLua_Closure_INTERP/1000 670507 ns 670485 ns 1049
BM_Lua_TailRecursion/100 3762 ns 3762 ns 186916
BM_Lua_TailRecursion/1000 36355 ns 36353 ns 19180
BM_Lua_TailRecursion/5000 185267 ns 185121 ns 3844
BM_FakeLua_TailRecursion_INTERP/100 40193 ns 40187 ns 17432
BM_FakeLua_TailRecursion_INTERP/1000 503108 ns 503077 ns 1000
BM_FakeLua_TailRecursion_INTERP/5000 6259916 ns 6259115 ns 111
BM_Lua_TableChurn/100 59469 ns 59465 ns 11172
BM_Lua_TableChurn/500 291246 ns 291232 ns 2342
BM_Lua_TableChurn/1000 608475 ns 608455 ns 1156
BM_FakeLua_TableChurn_INTERP/100 27575 ns 27573 ns 25768
BM_FakeLua_TableChurn_INTERP/500 137383 ns 137377 ns 5133
BM_FakeLua_TableChurn_INTERP/1000 273501 ns 273496 ns 2568
BM_Lua_StringChurn/100 86787 ns 86784 ns 7981
BM_Lua_StringChurn/500 560238 ns 560227 ns 1216
BM_Lua_StringChurn/1000 1137369 ns 1137349 ns 611
BM_FakeLua_StringChurn_INTERP/100 82985 ns 82979 ns 8970
BM_FakeLua_StringChurn_INTERP/500 381000 ns 380990 ns 1793
BM_FakeLua_StringChurn_INTERP/1000 812526 ns 812512 ns 882
BM_Lua_MixedAlloc/100 108735 ns 108731 ns 6403
BM_Lua_MixedAlloc/500 564361 ns 564349 ns 1297
BM_Lua_MixedAlloc/1000 1095508 ns 1095467 ns 633
BM_FakeLua_MixedAlloc_INTERP/100 61081 ns 61078 ns 11328
BM_FakeLua_MixedAlloc_INTERP/500 317101 ns 317086 ns 2245
BM_FakeLua_MixedAlloc_INTERP/1000 636884 ns 636886 ns 1073
BM_Lua_MathTrig/100000 28406530 ns 28399049 ns 25
BM_FakeLua_MathTrig_INTERP/100000 57870338 ns 57867951 ns 12
BM_Lua_MathSqrt/100000 6499086 ns 6498149 ns 112
BM_FakeLua_MathSqrt_INTERP/100000 19838534 ns 19837035 ns 35
BM_Lua_MathExpLog/100000 21038376 ns 21034487 ns 34
BM_FakeLua_MathExpLog_INTERP/100000 49770330 ns 49764563 ns 14
BM_Lua_MathMinMax/100000 33257803 ns 33253252 ns 21
BM_FakeLua_MathMinMax_INTERP/100000 78068647 ns 78066167 ns 9
BM_Lua_StringLen/10 133 ns 133 ns 5255089
BM_Lua_StringLen/100 299 ns 299 ns 2315101
BM_Lua_StringLen/1000 598 ns 598 ns 1214737
BM_Lua_StringLen/10000 2402 ns 2402 ns 294565
BM_FakeLua_StringLen_INTERP/10 311 ns 311 ns 2212979
BM_FakeLua_StringLen_INTERP/100 365 ns 365 ns 1932951
BM_FakeLua_StringLen_INTERP/1000 565 ns 565 ns 1232995
BM_FakeLua_StringLen_INTERP/10000 1064 ns 1064 ns 657973
BM_Lua_StringSub/10 266 ns 266 ns 2603296
BM_Lua_StringSub/100 500 ns 500 ns 1311387
BM_Lua_StringSub/1000 1046 ns 1046 ns 667537
BM_Lua_StringSub/10000 3807 ns 3806 ns 191614
BM_FakeLua_StringSub_INTERP/10 753 ns 753 ns 926310
BM_FakeLua_StringSub_INTERP/100 869 ns 869 ns 807951
BM_FakeLua_StringSub_INTERP/1000 1130 ns 1130 ns 609855
BM_FakeLua_StringSub_INTERP/10000 2046 ns 2045 ns 329919
BM_Lua_StringRep/10 327 ns 327 ns 2154444
BM_Lua_StringRep/100 932 ns 932 ns 727883
BM_Lua_StringRep/1000 5267 ns 5265 ns 133440
BM_FakeLua_StringRep_INTERP/10 726 ns 725 ns 931657
BM_FakeLua_StringRep_INTERP/100 1117 ns 1117 ns 616015
BM_FakeLua_StringRep_INTERP/1000 4874 ns 4874 ns 145223
BM_Lua_StringReverse/10 258 ns 257 ns 2716507
BM_Lua_StringReverse/100 696 ns 696 ns 970621
BM_Lua_StringReverse/1000 1952 ns 1952 ns 361174
BM_Lua_StringReverse/10000 12733 ns 12733 ns 54546
BM_FakeLua_StringReverse_INTERP/10 712 ns 712 ns 979915
BM_FakeLua_StringReverse_INTERP/100 883 ns 883 ns 793220
BM_FakeLua_StringReverse_INTERP/1000 2191 ns 2191 ns 318712
BM_FakeLua_StringReverse_INTERP/10000 11298 ns 11296 ns 62191
BM_Lua_StringLower/10 252 ns 251 ns 2809706
BM_Lua_StringLower/100 696 ns 696 ns 1013403
BM_Lua_StringLower/1000 2313 ns 2309 ns 310662
BM_Lua_StringLower/10000 16374 ns 16350 ns 43397
BM_FakeLua_StringLower_INTERP/10 619 ns 619 ns 1088881
BM_FakeLua_StringLower_INTERP/100 766 ns 766 ns 933398
BM_FakeLua_StringLower_INTERP/1000 1179 ns 1179 ns 555653
BM_FakeLua_StringLower_INTERP/10000 2653 ns 2653 ns 258309
BM_Lua_StringUpper/10 250 ns 250 ns 2752023
BM_Lua_StringUpper/100 712 ns 712 ns 992559
BM_Lua_StringUpper/1000 2263 ns 2263 ns 299372
BM_Lua_StringUpper/10000 15686 ns 15686 ns 44445
BM_FakeLua_StringUpper_INTERP/10 559 ns 559 ns 1225659
BM_FakeLua_StringUpper_INTERP/100 664 ns 664 ns 1044102
BM_FakeLua_StringUpper_INTERP/1000 1079 ns 1079 ns 650906
BM_FakeLua_StringUpper_INTERP/10000 2586 ns 2586 ns 271093
BM_Lua_StringByte/10 216 ns 216 ns 3245889
BM_Lua_StringByte/100 410 ns 410 ns 1707452
BM_Lua_StringByte/1000 708 ns 708 ns 982592
BM_FakeLua_StringByte_INTERP/10 665 ns 665 ns 1004509
BM_FakeLua_StringByte_INTERP/100 737 ns 737 ns 936469
BM_FakeLua_StringByte_INTERP/1000 918 ns 918 ns 758807
BM_Lua_StringChar/10 3101 ns 3100 ns 227212
BM_Lua_StringChar/100 18121 ns 18108 ns 38797
BM_Lua_StringChar/500 80596 ns 80591 ns 8481
BM_FakeLua_StringChar_INTERP/10 4713 ns 4713 ns 148278
BM_FakeLua_StringChar_INTERP/100 38219 ns 38219 ns 18354
BM_FakeLua_StringChar_INTERP/500 183011 ns 183006 ns 3867
BM_Lua_StringFormat/10 3735 ns 3735 ns 192317
BM_Lua_StringFormat/100 34750 ns 34749 ns 19989
BM_Lua_StringFormat/500 186590 ns 186590 ns 3834
BM_FakeLua_StringFormat_INTERP/10 5285 ns 5285 ns 124800
BM_FakeLua_StringFormat_INTERP/100 47515 ns 47515 ns 14820
BM_FakeLua_StringFormat_INTERP/500 238127 ns 238110 ns 2943
BM_Lua_StringFind/10 371 ns 371 ns 1948124
BM_Lua_StringFind/100 504 ns 504 ns 1312309
BM_Lua_StringFind/1000 860 ns 860 ns 836242
BM_Lua_StringFind/10000 3017 ns 2850 ns 246275
BM_FakeLua_StringFind_INTERP/10 1135 ns 1082 ns 672638
BM_FakeLua_StringFind_INTERP/100 1068 ns 1064 ns 695238
BM_FakeLua_StringFind_INTERP/1000 1501 ns 1500 ns 526220
BM_FakeLua_StringFind_INTERP/10000 2325 ns 2325 ns 257862
BM_Lua_StringGsub/10 847 ns 847 ns 871151
BM_Lua_StringGsub/100 4804 ns 4804 ns 144975
BM_Lua_StringGsub/1000 41984 ns 41983 ns 16648
BM_FakeLua_StringGsub_INTERP/10 2700 ns 2700 ns 257624
BM_FakeLua_StringGsub_INTERP/100 14755 ns 14754 ns 47288
BM_FakeLua_StringGsub_INTERP/1000 134159 ns 134159 ns 5268
BM_Lua_ToNumber/1 210 ns 210 ns 3308067
BM_FakeLua_ToNumber_INTERP/1 613 ns 613 ns 1157814
BM_Lua_ToString/10 531 ns 531 ns 1317167
BM_Lua_ToString/100 545 ns 545 ns 1287984
BM_Lua_ToString/500 510 ns 510 ns 1268430
BM_FakeLua_ToString_INTERP/10 687 ns 687 ns 1009822
BM_FakeLua_ToString_INTERP/100 693 ns 693 ns 1010478
BM_FakeLua_ToString_INTERP/500 691 ns 691 ns 1012225
BM_Lua_StringFindPattern/1000 841315 ns 841113 ns 831
BM_FakeLua_StringFindPattern_INTERP/1000 3395999 ns 3395933 ns 207
BM_Lua_StringGmatch/1000 1254819 ns 1254217 ns 580
BM_FakeLua_StringGmatch_INTERP/1000 2282902 ns 2282906 ns 309
BM_Lua_TableInsert/100 11848 ns 11847 ns 58757
BM_Lua_TableInsert/500 50790 ns 50783 ns 12873
BM_Lua_TableInsert/1000 99252 ns 99248 ns 7221
BM_Lua_TableInsert/5000 481485 ns 481467 ns 1459
BM_FakeLua_TableInsert_INTERP/100 35333 ns 35331 ns 21032
BM_FakeLua_TableInsert_INTERP/500 170284 ns 170282 ns 4103
BM_FakeLua_TableInsert_INTERP/1000 338430 ns 338377 ns 2055
BM_FakeLua_TableInsert_INTERP/5000 1675580 ns 1675498 ns 420
BM_Lua_TableRemove/100 16745 ns 16744 ns 44233
BM_Lua_TableRemove/500 69826 ns 69824 ns 9644
BM_Lua_TableRemove/1000 139181 ns 139181 ns 4979
BM_Lua_TableRemove/5000 818740 ns 818715 ns 893
BM_FakeLua_TableRemove_INTERP/100 39744 ns 39741 ns 17697
BM_FakeLua_TableRemove_INTERP/500 193218 ns 193204 ns 3640
BM_FakeLua_TableRemove_INTERP/1000 417360 ns 417277 ns 1816
BM_FakeLua_TableRemove_INTERP/5000 1980494 ns 1980486 ns 357
BM_Lua_TableConcat/100 40270 ns 40269 ns 17312
BM_Lua_TableConcat/500 195418 ns 195390 ns 3575
BM_Lua_TableConcat/1000 395958 ns 395955 ns 1766
BM_FakeLua_TableConcat_INTERP/100 38597 ns 38596 ns 17322
BM_FakeLua_TableConcat_INTERP/500 194953 ns 194946 ns 3471
BM_FakeLua_TableConcat_INTERP/1000 378109 ns 378105 ns 1854
BM_Lua_TablePack/1 1391 ns 1391 ns 516095
BM_FakeLua_TablePack_INTERP/1 1246 ns 1246 ns 583527
BM_Lua_TableMove/100 8386 ns 8386 ns 81054
BM_Lua_TableMove/500 29067 ns 29066 ns 27500
BM_Lua_TableMove/1000 46120 ns 46119 ns 14068
BM_Lua_TableMove/5000 227038 ns 227034 ns 3061
BM_FakeLua_TableMove_INTERP/100 11804 ns 11804 ns 59495
BM_FakeLua_TableMove_INTERP/500 52757 ns 52753 ns 13284
BM_FakeLua_TableMove_INTERP/1000 104800 ns 104798 ns 6719
BM_FakeLua_TableMove_INTERP/5000 589798 ns 589783 ns 1170
BM_Lua_TableSort/100 28256 ns 28256 ns 24447
BM_Lua_TableSort/500 167972 ns 167969 ns 4165
BM_Lua_TableSort/1000 368101 ns 368079 ns 1912
BM_FakeLua_TableSort_INTERP/100 18169 ns 18138 ns 38351
BM_FakeLua_TableSort_INTERP/500 92839 ns 92823 ns 7457
BM_FakeLua_TableSort_INTERP/1000 197154 ns 196995 ns 3544
BM_Lua_TableCreate/1000 26310 ns 26205 ns 27662
BM_Lua_TableCreate/3000 75548 ns 75535 ns 9256
BM_Lua_TableCreate/5000 130772 ns 130580 ns 5470
BM_FakeLua_TableCreate_INTERP/1000 70613 ns 70599 ns 10037
BM_FakeLua_TableCreate_INTERP/3000 236687 ns 236599 ns 3079
BM_FakeLua_TableCreate_INTERP/5000 432378 ns 432278 ns 1371
BM_Lua_HashInsert/100 59467 ns 59432 ns 11755
BM_Lua_HashInsert/500 308858 ns 308734 ns 2319
BM_Lua_HashInsert/1000 600007 ns 599999 ns 1037
BM_FakeLua_HashInsert_INTERP/100 39912 ns 39911 ns 17196
BM_FakeLua_HashInsert_INTERP/500 198025 ns 198016 ns 3588
BM_FakeLua_HashInsert_INTERP/1000 449572 ns 449553 ns 1558
BM_Lua_HashLookup/100 48837 ns 48833 ns 15309
BM_Lua_HashLookup/500 250008 ns 249949 ns 2682
BM_Lua_HashLookup/1000 490965 ns 490927 ns 1423
BM_FakeLua_HashLookup_INTERP/100 42890 ns 42887 ns 15922
BM_FakeLua_HashLookup_INTERP/500 216841 ns 216829 ns 3157
BM_FakeLua_HashLookup_INTERP/1000 434753 ns 434704 ns 1589
BM_Lua_NestedTable/1000 246962 ns 246938 ns 2869
BM_Lua_NestedTable/10000 2668007 ns 2667960 ns 274
BM_FakeLua_NestedTable_INTERP/1000 1089201 ns 1089025 ns 650
BM_FakeLua_NestedTable_INTERP/10000 10695225 ns 10692977 ns 67
以下为 benchmark_algo.cpp / benchmark_string.cpp / benchmark_table.cpp / benchmark_function.cpp / benchmark_gc.cpp / benchmark_math.cpp 全部 51 个场景的完整 google benchmark 输出(含 TCC 数据):
⚠️ 其中
BM_*_StringFindPattern/BM_*_StringGmatch八行是[0-9]+修正之前的旧数据,两边工作量不对等,不可用于比较;以上文表格中的修正值为准。
<string>:1561: warning: assignment of read-only location
Starting benchmarks...
2026-08-14T12:05:23+08:00
Running ./bin/bench_mark
Run on (2 X 2595.12 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x2)
L1 Instruction 32 KiB (x2)
L2 Unified 4096 KiB (x2)
L3 Unified 16384 KiB (x1)
Load Average: 5.87, 5.69, 4.54
***WARNING*** ASLR is enabled, the results may have unreproducible noise in them.
----------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------
BM_CPP_BinarySearch/100 7,735 ns 4,893 ns 143,193
BM_CPP_BinarySearch/1000 94,468 ns 65,183 ns 10,769
BM_CPP_BinarySearch/500 53,068 ns 29,810 ns 23,430
BM_CPP_BubbleSort/100 98,467 ns 62,909 ns 11,127
BM_CPP_BubbleSort/200 388,207 ns 249,256 ns 2,800
BM_CPP_BubbleSort/50 26,237 ns 15,964 ns 43,992
BM_CPP_Closure/100 792 ns 551 ns 1,272,292
BM_CPP_Closure/1000 8,993 ns 5,466 ns 128,618
BM_CPP_EmptyCall/10000 9 ns 5 ns 127,122,452
BM_CPP_EmptyCall/100000 8 ns 5 ns 127,515,986
BM_CPP_FastPow/1234567/7654321/1000000007 514 ns 297 ns 2,357,197
BM_CPP_FastPow/2/1000/1000000007 261 ns 121 ns 5,799,249
BM_CPP_FastPow/7/1000000/1000000007 373 ns 205 ns 3,429,130
BM_CPP_Fibonacci/20 342,994 ns 188,804 ns 3,720
BM_CPP_Fibonacci/25 3,686,904 ns 2,091,372 ns 333
BM_CPP_Fibonacci/30 37,599,358 ns 23,298,280 ns 30
BM_CPP_Fibonacci/32 99,812,719 ns 60,640,845 ns 12
BM_CPP_FloatPoly/1000000 7,930,843 ns 5,847,105 ns 120
BM_CPP_GCD/123456789/987654321 82 ns 44 ns 15,634,680
BM_CPP_GCD/2147483647/1073741823 65 ns 39 ns 17,808,461
BM_CPP_GCD/832040/514229 270 ns 181 ns 3,855,731
BM_CPP_HashInsert/100 42,343 ns 25,099 ns 27,962
BM_CPP_HashInsert/1000 404,595 ns 288,678 ns 2,410
BM_CPP_HashInsert/500 224,686 ns 141,863 ns 4,922
BM_CPP_HashLookup/100 540,670 ns 308,545 ns 2,270
BM_CPP_HashLookup/1000 763,223 ns 492,689 ns 1,426
BM_CPP_HashLookup/500 609,514 ns 389,886 ns 1,793
BM_CPP_InsertionSort/100 51,359 ns 30,374 ns 23,049
BM_CPP_InsertionSort/200 204,452 ns 118,372 ns 5,882
BM_CPP_InsertionSort/50 13,938 ns 8,006 ns 88,502
BM_CPP_MatMul 485 ns 247 ns 2,846,106
BM_CPP_MathExpLog/100000 7,276,256 ns 4,629,740 ns 151
BM_CPP_MathMinMax/100000 3,610,545 ns 2,396,188 ns 291
BM_CPP_MathSqrt/100000 906,821 ns 571,279 ns 1,234
BM_CPP_MathTrig/100000 5,398,646 ns 3,531,282 ns 199
BM_CPP_MixedAlloc/100 32,146 ns 23,078 ns 30,205
BM_CPP_MixedAlloc/1000 433,047 ns 234,244 ns 2,990
BM_CPP_MixedAlloc/500 200,939 ns 116,896 ns 5,985
BM_CPP_MultiReturn/1000 10,052 ns 5,480 ns 126,527
BM_CPP_MultiReturn/10000 91,075 ns 54,916 ns 12,734
BM_CPP_NestedTable/1000 91,243 ns 60,937 ns 11,457
BM_CPP_NestedTable/10000 1,132,805 ns 607,423 ns 1,155
BM_CPP_Popcount/1000 48,426 ns 32,558 ns 21,481
BM_CPP_Popcount/10000 649,786 ns 408,784 ns 1,712
BM_CPP_Popcount/100000 7,400,519 ns 5,004,960 ns 140
BM_CPP_PowMod/1234567/7654321/1000000007 489 ns 297 ns 2,355,934
BM_CPP_PowMod/2/1000/1000000007 192 ns 121 ns 5,817,991
BM_CPP_PowMod/7/1000000/1000000007 329 ns 205 ns 3,395,045
BM_CPP_Recursion/10 2,623 ns 1,517 ns 461,648
BM_CPP_Recursion/20 306,905 ns 188,664 ns 3,708
BM_CPP_Recursion/25 3,584,836 ns 2,076,389 ns 337
BM_CPP_Sieve/100 2,194 ns 1,462 ns 476,278
BM_CPP_Sieve/1000 27,651 ns 15,057 ns 46,837
BM_CPP_Sieve/500 14,586 ns 7,367 ns 94,648
BM_CPP_Sieve/5000 125,191 ns 79,410 ns 8,797
BM_CPP_StringByte/10 30 ns 16 ns 41,418,033
BM_CPP_StringByte/100 27 ns 16 ns 41,401,382
BM_CPP_StringByte/1000 27 ns 16 ns 41,359,841
BM_CPP_StringChar/10 348 ns 208 ns 3,374,227
BM_CPP_StringChar/100 2,491 ns 1,459 ns 479,078
BM_CPP_StringChar/500 11,997 ns 6,820 ns 102,786
BM_CPP_StringChurn/100 52,805 ns 29,398 ns 23,705
BM_CPP_StringChurn/1000 572,837 ns 302,474 ns 2,282
BM_CPP_StringChurn/500 231,629 ns 152,176 ns 4,647
BM_CPP_StringFind/10 105 ns 66 ns 10,555,668
BM_CPP_StringFind/100 132 ns 66 ns 10,629,430
BM_CPP_StringFind/1000 123 ns 70 ns 9,901,078
BM_CPP_StringFind/10000 209 ns 130 ns 5,445,641
BM_CPP_StringFindPattern/1000 359,361 ns 193,176 ns 3,608
BM_CPP_StringFormat/10 845 ns 522 ns 1,337,811
BM_CPP_StringFormat/100 7,618 ns 5,158 ns 132,433
BM_CPP_StringFormat/500 43,386 ns 28,435 ns 24,749
BM_CPP_StringGmatch/1000 437,710 ns 226,440 ns 3,092
BM_CPP_StringGsub/10 277 ns 184 ns 3,792,558
BM_CPP_StringGsub/100 2,760 ns 1,736 ns 407,043
BM_CPP_StringGsub/1000 27,888 ns 17,248 ns 40,720
BM_CPP_StringLen/10 27 ns 16 ns 41,401,789
BM_CPP_StringLen/100 26 ns 16 ns 41,582,886
BM_CPP_StringLen/1000 26 ns 16 ns 41,425,791
BM_CPP_StringLen/10000 23 ns 16 ns 41,620,113
BM_CPP_StringLower/10 306 ns 195 ns 3,601,028
BM_CPP_StringLower/100 2,325 ns 1,348 ns 521,413
BM_CPP_StringLower/1000 22,828 ns 12,466 ns 56,209
BM_CPP_StringLower/10000 195,537 ns 123,952 ns 5,665
BM_CPP_StringRep/10 739 ns 420 ns 1,655,571
BM_CPP_StringRep/100 5,540 ns 3,120 ns 225,710
BM_CPP_StringRep/1000 49,757 ns 30,123 ns 23,272
BM_CPP_StringReverse/10 175 ns 103 ns 6,811,517
BM_CPP_StringReverse/100 692 ns 450 ns 1,556,938
BM_CPP_StringReverse/1000 5,818 ns 3,468 ns 200,200
BM_CPP_StringReverse/10000 53,508 ns 34,013 ns 20,679
BM_CPP_StringSub/10 151 ns 91 ns 7,642,290
BM_CPP_StringSub/100 212 ns 134 ns 5,214,628
BM_CPP_StringSub/1000 211 ns 143 ns 4,924,983
BM_CPP_StringSub/10000 566 ns 369 ns 1,910,754
BM_CPP_StringUpper/10 331 ns 194 ns 3,595,139
BM_CPP_StringUpper/100 2,405 ns 1,347 ns 521,995
BM_CPP_StringUpper/1000 21,399 ns 12,455 ns 55,977
BM_CPP_StringUpper/10000 214,600 ns 123,125 ns 5,676
BM_CPP_Sum/10000 87,621 ns 54,921 ns 12,724
BM_CPP_Sum/100000 855,607 ns 548,039 ns 1,282
BM_CPP_Sum/1000000 8,922,555 ns 5,483,076 ns 128
BM_CPP_Sum/5000000 40,471,358 ns 27,449,499 ns 26
BM_CPP_TableChurn/100 8,172 ns 5,265 ns 131,011
BM_CPP_TableChurn/1000 76,141 ns 52,421 ns 13,634
BM_CPP_TableChurn/500 50,410 ns 26,018 ns 26,612
BM_CPP_TableConcat/100 12,265 ns 8,491 ns 82,644
BM_CPP_TableConcat/1000 124,859 ns 87,820 ns 7,873
BM_CPP_TableConcat/500 83,736 ns 43,958 ns 15,941
BM_CPP_TableCreate/1000 19,036 ns 11,735 ns 59,861
BM_CPP_TableCreate/3000 53,314 ns 34,985 ns 20,129
BM_CPP_TableCreate/5000 89,021 ns 58,477 ns 12,039
BM_CPP_TableInsert/100 1,047 ns 659 ns 1,075,111
BM_CPP_TableInsert/1000 11,124 ns 5,875 ns 120,021
BM_CPP_TableInsert/500 5,603 ns 2,984 ns 234,160
BM_CPP_TableInsert/5000 44,146 ns 28,972 ns 24,187
BM_CPP_TableMove/100 3,080 ns 1,905 ns 366,242
BM_CPP_TableMove/1000 25,244 ns 17,827 ns 39,325
BM_CPP_TableMove/500 15,080 ns 9,002 ns 77,536
BM_CPP_TableMove/5000 144,251 ns 88,188 ns 7,924
BM_CPP_TablePack/1 10 ns 5 ns 127,192,129
BM_CPP_TableRemove/100 3,206 ns 1,792 ns 389,950
BM_CPP_TableRemove/1000 32,342 ns 17,231 ns 40,355
BM_CPP_TableRemove/500 14,258 ns 8,737 ns 81,578
BM_CPP_TableRemove/5000 167,448 ns 85,880 ns 8,243
BM_CPP_TableSort/100 8,862 ns 5,155 ns 137,027
BM_CPP_TableSort/1000 87,764 ns 69,572 ns 10,079
BM_CPP_TableSort/500 53,222 ns 33,132 ns 21,144
BM_CPP_TailRecursion/100 1,049 ns 553 ns 1,267,372
BM_CPP_TailRecursion/1000 9,701 ns 5,491 ns 127,230
BM_CPP_TailRecursion/5000 45,927 ns 27,491 ns 25,469
BM_CPP_ToNumber/1 167 ns 96 ns 7,262,672
BM_CPP_ToString/10 1,205 ns 872 ns 802,717
BM_CPP_ToString/100 13,072 ns 8,462 ns 84,581
BM_CPP_ToString/500 70,978 ns 44,001 ns 16,041
BM_CPP_Variadic/1 18 ns 10 ns 64,199,090
BM_CPP_Vector3/10000 85,966 ns 52,871 ns 13,291
BM_CPP_Vector3/100000 984,296 ns 527,532 ns 1,322
BM_CPP_Vector3/1000000 10,423,974 ns 5,285,754 ns 133
BM_FakeLua_BinarySearch_GCC/100 13,922 ns 8,156 ns 85,400
BM_FakeLua_BinarySearch_GCC/1000 271,491 ns 156,553 ns 4,320
BM_FakeLua_BinarySearch_TCC/100 81,768 ns 52,935 ns 13,579
BM_FakeLua_BinarySearch_TCC/1000 1,422,010 ns 874,824 ns 774
BM_FakeLua_BinarySearch_TCC/500 660,936 ns 373,850 ns 1,911
BM_FakeLua_BubbleSort_GCC/100 230,707 ns 175,479 ns 3,985
BM_FakeLua_BubbleSort_GCC/200 1,244,348 ns 698,588 ns 1,007
BM_FakeLua_BubbleSort_GCC/50 83,555 ns 44,675 ns 15,516
BM_FakeLua_BubbleSort_TCC/100 1,454,647 ns 836,477 ns 816
BM_FakeLua_BubbleSort_TCC/200 5,488,115 ns 3,256,166 ns 213
BM_FakeLua_BubbleSort_TCC/50 293,114 ns 211,591 ns 3,390
BM_FakeLua_Closure_GCC/100 19,181 ns 11,046 ns 63,564
BM_FakeLua_Closure_GCC/1000 211,068 ns 106,248 ns 6,492
BM_FakeLua_Closure_TCC/100 36,088 ns 21,576 ns 32,483
BM_FakeLua_Closure_TCC/1000 354,499 ns 211,904 ns 3,347
BM_FakeLua_EmptyCall_GCC/10000 56,352 ns 30,976 ns 23,093
BM_FakeLua_EmptyCall_GCC/100000 557,461 ns 307,805 ns 2,283
BM_FakeLua_EmptyCall_TCC/10000 367,650 ns 256,049 ns 2,730
BM_FakeLua_EmptyCall_TCC/100000 5,327,379 ns 2,558,148 ns 272
BM_FakeLua_FastPow_GCC/1234567/7654321/1000000007 1,095 ns 729 ns 957,306
BM_FakeLua_FastPow_GCC/2/1000/1000000007 919 ns 531 ns 1,320,878
BM_FakeLua_FastPow_GCC/7/1000000/1000000007 1,008 ns 632 ns 1,110,756
BM_FakeLua_FastPow_TCC/1234567/7654321/1000000007 1,148 ns 818 ns 863,171
BM_FakeLua_FastPow_TCC/2/1000/1000000007 864 ns 630 ns 1,111,709
BM_FakeLua_FastPow_TCC/7/1000000/1000000007 1,241 ns 734 ns 956,152
BM_FakeLua_Fibonacci_GCC/20 45,729 ns 29,702 ns 24,017
BM_FakeLua_Fibonacci_GCC/25 385,589 ns 271,393 ns 2,570
BM_FakeLua_Fibonacci_GCC/30 5,624,615 ns 2,967,464 ns 241
BM_FakeLua_Fibonacci_GCC/32 12,786,224 ns 7,590,283 ns 93
BM_FakeLua_Fibonacci_TCC/20 123,444 ns 78,774 ns 9,099
BM_FakeLua_Fibonacci_TCC/25 1,350,023 ns 855,121 ns 805
BM_FakeLua_Fibonacci_TCC/30 12,850,953 ns 9,452,837 ns 74
BM_FakeLua_Fibonacci_TCC/32 38,140,319 ns 24,861,804 ns 28
BM_FakeLua_FloatPoly_GCC/1000000 4,232,156 ns 2,865,423 ns 245
BM_FakeLua_FloatPoly_TCC/1000000 22,886,829 ns 13,789,552 ns 50
BM_FakeLua_GCD_GCC/123456789/987654321 654 ns 423 ns 1,654,415
BM_FakeLua_GCD_GCC/2147483647/1073741823 620 ns 421 ns 1,665,114
BM_FakeLua_GCD_GCC/832040/514229 824 ns 520 ns 1,353,393
BM_FakeLua_GCD_TCC/123456789/987654321 784 ns 490 ns 1,442,922
BM_FakeLua_GCD_TCC/2147483647/1073741823 817 ns 478 ns 1,444,175
BM_FakeLua_GCD_TCC/832040/514229 994 ns 615 ns 1,145,840
BM_FakeLua_HashInsert_GCC/100 39,491 ns 24,481 ns 28,788
BM_FakeLua_HashInsert_GCC/1000 394,557 ns 253,863 ns 2,777
BM_FakeLua_HashInsert_GCC/500 209,448 ns 119,708 ns 5,816
BM_FakeLua_HashInsert_TCC/100 62,986 ns 39,308 ns 17,965
BM_FakeLua_HashInsert_TCC/1000 709,844 ns 432,322 ns 1,607
BM_FakeLua_HashInsert_TCC/500 288,573 ns 189,151 ns 3,702
BM_FakeLua_HashLookup_GCC/100 32,466 ns 22,404 ns 31,590
BM_FakeLua_HashLookup_GCC/1000 363,678 ns 222,897 ns 3,149
BM_FakeLua_HashLookup_GCC/500 161,127 ns 111,924 ns 6,177
BM_FakeLua_HashLookup_TCC/100 50,594 ns 30,941 ns 22,728
BM_FakeLua_HashLookup_TCC/1000 541,329 ns 316,970 ns 2,207
BM_FakeLua_HashLookup_TCC/500 271,060 ns 156,821 ns 4,417
BM_FakeLua_InsertionSort_GCC/100 154,078 ns 89,101 ns 7,854
BM_FakeLua_InsertionSort_GCC/200 584,821 ns 345,628 ns 2,021
BM_FakeLua_InsertionSort_GCC/50 44,420 ns 23,795 ns 29,465
BM_FakeLua_InsertionSort_TCC/100 902,132 ns 532,541 ns 1,398
BM_FakeLua_InsertionSort_TCC/200 3,914,237 ns 2,087,508 ns 346
BM_FakeLua_InsertionSort_TCC/50 233,170 ns 139,290 ns 4,924
BM_FakeLua_MatMul_GCC 2,165 ns 1,260 ns 545,399
BM_FakeLua_MatMul_TCC 6,551 ns 4,132 ns 166,327
BM_FakeLua_MathExpLog_GCC/100000 5,721,714 ns 4,046,541 ns 174
BM_FakeLua_MathExpLog_TCC/100000 17,934,875 ns 11,444,546 ns 61
BM_FakeLua_MathMinMax_GCC/100000 3,704,800 ns 2,159,112 ns 323
BM_FakeLua_MathMinMax_TCC/100000 19,676,004 ns 11,465,920 ns 62
BM_FakeLua_MathSqrt_GCC/100000 464,885 ns 275,825 ns 2,537
BM_FakeLua_MathSqrt_TCC/100000 6,879,179 ns 4,166,763 ns 168
BM_FakeLua_MathTrig_GCC/100000 5,560,194 ns 3,058,615 ns 229
BM_FakeLua_MathTrig_TCC/100000 21,645,316 ns 11,484,684 ns 61
BM_FakeLua_MixedAlloc_GCC/100 62,577 ns 40,070 ns 17,411
BM_FakeLua_MixedAlloc_GCC/1000 536,218 ns 393,414 ns 1,779
BM_FakeLua_MixedAlloc_GCC/500 310,651 ns 197,231 ns 3,526
BM_FakeLua_MixedAlloc_TCC/100 102,126 ns 62,232 ns 11,196
BM_FakeLua_MixedAlloc_TCC/1000 973,380 ns 628,448 ns 1,111
BM_FakeLua_MixedAlloc_TCC/500 521,024 ns 314,661 ns 2,229
BM_FakeLua_MultiReturn_GCC/1000 4,766 ns 2,915 ns 240,764
BM_FakeLua_MultiReturn_GCC/10000 44,533 ns 25,062 ns 27,754
BM_FakeLua_MultiReturn_TCC/1000 9,596 ns 5,775 ns 124,053
BM_FakeLua_MultiReturn_TCC/10000 84,003 ns 52,909 ns 13,405
BM_FakeLua_NestedTable_GCC/1000 138,830 ns 85,672 ns 8,199
BM_FakeLua_NestedTable_GCC/10000 1,448,717 ns 845,455 ns 813
BM_FakeLua_NestedTable_TCC/1000 769,763 ns 444,952 ns 1,569
BM_FakeLua_NestedTable_TCC/10000 7,183,922 ns 4,455,904 ns 158
BM_FakeLua_Popcount_GCC/1000 6,777 ns 4,367 ns 160,915
BM_FakeLua_Popcount_GCC/10000 89,012 ns 48,663 ns 14,499
BM_FakeLua_Popcount_GCC/100000 1,016,120 ns 592,552 ns 1,160
BM_FakeLua_Popcount_TCC/1000 21,598 ns 13,338 ns 52,591
BM_FakeLua_Popcount_TCC/10000 268,037 ns 153,982 ns 4,337
BM_FakeLua_Popcount_TCC/100000 2,767,183 ns 1,913,541 ns 375
BM_FakeLua_PowMod_GCC/1234567/7654321/1000000007 1,209 ns 759 ns 928,849
BM_FakeLua_PowMod_GCC/2/1000/1000000007 830 ns 559 ns 1,262,622
BM_FakeLua_PowMod_GCC/7/1000000/1000000007 957 ns 666 ns 1,059,056
BM_FakeLua_PowMod_TCC/1234567/7654321/1000000007 1,821 ns 1,084 ns 645,501
BM_FakeLua_PowMod_TCC/2/1000/1000000007 1,222 ns 720 ns 977,040
BM_FakeLua_PowMod_TCC/7/1000000/1000000007 1,492 ns 947 ns 733,551
BM_FakeLua_Recursion_GCC/10 928 ns 578 ns 1,197,261
BM_FakeLua_Recursion_GCC/20 48,722 ns 30,172 ns 23,410
BM_FakeLua_Recursion_GCC/25 386,863 ns 269,108 ns 2,586
BM_FakeLua_Recursion_TCC/10 1,702 ns 1,089 ns 639,131
BM_FakeLua_Recursion_TCC/20 138,307 ns 79,106 ns 8,834
BM_FakeLua_Recursion_TCC/25 1,453,790 ns 857,782 ns 801
BM_FakeLua_Sieve_GCC/100 6,701 ns 3,979 ns 175,646
BM_FakeLua_Sieve_GCC/1000 63,689 ns 35,024 ns 19,847
BM_FakeLua_Sieve_GCC/500 29,989 ns 17,088 ns 40,695
BM_FakeLua_Sieve_GCC/5000 344,444 ns 213,124 ns 3,359
BM_FakeLua_Sieve_TCC/100 29,560 ns 17,487 ns 39,646
BM_FakeLua_Sieve_TCC/1000 263,604 ns 172,424 ns 4,041
BM_FakeLua_Sieve_TCC/500 143,477 ns 85,340 ns 8,216
BM_FakeLua_Sieve_TCC/5000 1,780,537 ns 1,041,591 ns 679
BM_FakeLua_StringByte_GCC/10 939 ns 531 ns 1,304,736
BM_FakeLua_StringByte_GCC/100 951 ns 576 ns 1,226,213
BM_FakeLua_StringByte_GCC/1000 1,003 ns 603 ns 1,162,886
BM_FakeLua_StringByte_TCC/10 983 ns 593 ns 1,206,309
BM_FakeLua_StringByte_TCC/100 1,000 ns 638 ns 1,076,212
BM_FakeLua_StringByte_TCC/1000 1,140 ns 666 ns 1,037,743
BM_FakeLua_StringChar_GCC/10 4,717 ns 2,785 ns 252,981
BM_FakeLua_StringChar_GCC/100 26,150 ns 16,053 ns 43,522
BM_FakeLua_StringChar_GCC/500 124,214 ns 72,588 ns 9,375
BM_FakeLua_StringChar_TCC/10 7,145 ns 4,461 ns 157,332
BM_FakeLua_StringChar_TCC/100 56,569 ns 31,568 ns 22,304
BM_FakeLua_StringChar_TCC/500 214,876 ns 144,492 ns 4,830
BM_FakeLua_StringChurn_GCC/100 65,339 ns 44,656 ns 15,766
BM_FakeLua_StringChurn_GCC/1000 826,591 ns 443,901 ns 1,576
BM_FakeLua_StringChurn_GCC/500 365,738 ns 223,272 ns 3,136
BM_FakeLua_StringChurn_TCC/100 90,760 ns 57,091 ns 12,523
BM_FakeLua_StringChurn_TCC/1000 1,114,236 ns 571,149 ns 1,237
BM_FakeLua_StringChurn_TCC/500 513,027 ns 283,598 ns 2,459
BM_FakeLua_StringFindPattern_GCC/1000 11,580,621 ns 7,654,594 ns 91
BM_FakeLua_StringFindPattern_TCC/1000 13,050,656 ns 7,914,296 ns 88
BM_FakeLua_StringFind_GCC/10 2,628 ns 1,647 ns 424,630
BM_FakeLua_StringFind_GCC/100 2,637 ns 1,654 ns 421,490
BM_FakeLua_StringFind_GCC/1000 2,950 ns 1,723 ns 410,605
BM_FakeLua_StringFind_GCC/10000 3,955 ns 2,502 ns 276,271
BM_FakeLua_StringFind_TCC/10 2,650 ns 1,713 ns 409,465
BM_FakeLua_StringFind_TCC/100 2,782 ns 1,721 ns 404,834
BM_FakeLua_StringFind_TCC/1000 2,985 ns 1,771 ns 394,892
BM_FakeLua_StringFind_TCC/10000 3,996 ns 2,588 ns 272,588
BM_FakeLua_StringFormat_GCC/10 3,354 ns 1,954 ns 356,680
BM_FakeLua_StringFormat_GCC/100 26,095 ns 15,567 ns 44,584
BM_FakeLua_StringFormat_GCC/500 119,442 ns 77,076 ns 8,998
BM_FakeLua_StringFormat_TCC/10 3,333 ns 2,324 ns 299,598
BM_FakeLua_StringFormat_TCC/100 29,993 ns 18,834 ns 36,855
BM_FakeLua_StringFormat_TCC/500 160,453 ns 93,895 ns 7,480
BM_FakeLua_StringGmatch_GCC/1000 8,819,264 ns 5,272,718 ns 130
BM_FakeLua_StringGmatch_TCC/1000 9,236,472 ns 5,559,361 ns 126
BM_FakeLua_StringGsub_GCC/10 13,205 ns 8,969 ns 78,419
BM_FakeLua_StringGsub_GCC/100 103,458 ns 68,161 ns 10,359
BM_FakeLua_StringGsub_GCC/1000 1,101,351 ns 657,675 ns 1,070
BM_FakeLua_StringGsub_TCC/10 13,795 ns 8,996 ns 77,772
BM_FakeLua_StringGsub_TCC/100 114,274 ns 67,941 ns 10,349
BM_FakeLua_StringGsub_TCC/1000 1,114,296 ns 658,608 ns 1,073
BM_FakeLua_StringLen_GCC/10 818 ns 492 ns 1,432,371
BM_FakeLua_StringLen_GCC/100 796 ns 540 ns 1,299,835
BM_FakeLua_StringLen_GCC/1000 866 ns 561 ns 1,246,589
BM_FakeLua_StringLen_GCC/10000 1,914 ns 1,077 ns 647,127
BM_FakeLua_StringLen_TCC/10 877 ns 535 ns 1,273,369
BM_FakeLua_StringLen_TCC/100 1,032 ns 585 ns 1,189,078
BM_FakeLua_StringLen_TCC/1000 901 ns 603 ns 1,162,520
BM_FakeLua_StringLen_TCC/10000 1,808 ns 1,112 ns 601,399
BM_FakeLua_StringLower_GCC/10 1,048 ns 600 ns 1,152,148
BM_FakeLua_StringLower_GCC/100 1,393 ns 702 ns 1,001,106
BM_FakeLua_StringLower_GCC/1000 1,551 ns 846 ns 816,183
BM_FakeLua_StringLower_GCC/10000 5,043 ns 2,822 ns 251,014
BM_FakeLua_StringLower_TCC/10 1,073 ns 692 ns 1,016,288
BM_FakeLua_StringLower_TCC/100 1,855 ns 1,212 ns 583,384
BM_FakeLua_StringLower_TCC/1000 8,751 ns 5,402 ns 128,947
BM_FakeLua_StringLower_TCC/10000 86,072 ns 48,207 ns 14,542
BM_FakeLua_StringRep_GCC/10 1,033 ns 671 ns 1,049,153
BM_FakeLua_StringRep_GCC/100 1,806 ns 1,100 ns 630,280
BM_FakeLua_StringRep_GCC/1000 8,126 ns 4,888 ns 141,355
BM_FakeLua_StringRep_TCC/10 1,328 ns 752 ns 927,065
BM_FakeLua_StringRep_TCC/100 2,358 ns 1,389 ns 505,237
BM_FakeLua_StringRep_TCC/1000 10,189 ns 7,129 ns 98,349
BM_FakeLua_StringReverse_GCC/10 1,109 ns 604 ns 1,148,807
BM_FakeLua_StringReverse_GCC/100 1,397 ns 765 ns 919,546
BM_FakeLua_StringReverse_GCC/1000 2,668 ns 1,438 ns 477,188
BM_FakeLua_StringReverse_GCC/10000 14,935 ns 8,698 ns 78,927
BM_FakeLua_StringReverse_TCC/10 925 ns 681 ns 1,037,089
BM_FakeLua_StringReverse_TCC/100 1,870 ns 1,066 ns 657,331
BM_FakeLua_StringReverse_TCC/1000 6,110 ns 4,063 ns 172,547
BM_FakeLua_StringReverse_TCC/10000 52,709 ns 34,603 ns 20,307
BM_FakeLua_StringSub_GCC/10 2,264 ns 1,345 ns 518,241
BM_FakeLua_StringSub_GCC/100 2,557 ns 1,430 ns 489,733
BM_FakeLua_StringSub_GCC/1000 2,763 ns 1,490 ns 466,344
BM_FakeLua_StringSub_GCC/10000 4,070 ns 2,268 ns 306,435
BM_FakeLua_StringSub_TCC/10 2,372 ns 1,390 ns 508,219
BM_FakeLua_StringSub_TCC/100 2,314 ns 1,485 ns 474,333
BM_FakeLua_StringSub_TCC/1000 3,228 ns 1,543 ns 458,387
BM_FakeLua_StringSub_TCC/10000 3,832 ns 2,334 ns 301,764
BM_FakeLua_StringUpper_GCC/10 1,127 ns 601 ns 1,168,948
BM_FakeLua_StringUpper_GCC/100 1,114 ns 702 ns 992,199
BM_FakeLua_StringUpper_GCC/1000 1,386 ns 850 ns 820,082
BM_FakeLua_StringUpper_GCC/10000 5,104 ns 2,832 ns 248,824
BM_FakeLua_StringUpper_TCC/10 1,169 ns 696 ns 1,006,148
BM_FakeLua_StringUpper_TCC/100 2,031 ns 1,214 ns 575,272
BM_FakeLua_StringUpper_TCC/1000 10,406 ns 5,421 ns 129,932
BM_FakeLua_StringUpper_TCC/10000 81,506 ns 48,151 ns 14,489
BM_FakeLua_Sum_GCC/10000 6,452 ns 3,508 ns 199,582
BM_FakeLua_Sum_GCC/100000 50,566 ns 31,381 ns 22,327
BM_FakeLua_Sum_GCC/1000000 578,521 ns 309,437 ns 2,250
BM_FakeLua_Sum_GCC/5000000 3,098,218 ns 1,547,859 ns 453
BM_FakeLua_Sum_TCC/10000 37,857 ns 24,934 ns 27,821
BM_FakeLua_Sum_TCC/100000 417,183 ns 246,397 ns 2,850
BM_FakeLua_Sum_TCC/1000000 4,479,399 ns 2,452,786 ns 283
BM_FakeLua_Sum_TCC/5000000 18,728,703 ns 12,321,859 ns 56
BM_FakeLua_TableChurn_GCC/100 11,409 ns 6,971 ns 100,756
BM_FakeLua_TableChurn_GCC/1000 119,994 ns 65,155 ns 10,754
BM_FakeLua_TableChurn_GCC/500 43,896 ns 33,036 ns 21,217
BM_FakeLua_TableChurn_TCC/100 57,082 ns 36,778 ns 19,044
BM_FakeLua_TableChurn_TCC/1000 466,370 ns 354,670 ns 1,972
BM_FakeLua_TableChurn_TCC/500 281,725 ns 182,147 ns 3,900
BM_FakeLua_TableConcat_GCC/100 58,710 ns 38,108 ns 18,314
BM_FakeLua_TableConcat_GCC/1000 708,780 ns 365,628 ns 1,886
BM_FakeLua_TableConcat_GCC/500 309,868 ns 185,102 ns 3,781
BM_FakeLua_TableConcat_TCC/100 101,629 ns 54,515 ns 13,123
BM_FakeLua_TableConcat_TCC/1000 914,385 ns 523,737 ns 1,328
BM_FakeLua_TableConcat_TCC/500 487,979 ns 262,511 ns 2,665
BM_FakeLua_TableCreate_GCC/1000 33,890 ns 20,427 ns 34,468
BM_FakeLua_TableCreate_GCC/3000 117,469 ns 69,451 ns 10,059
BM_FakeLua_TableCreate_GCC/5000 251,652 ns 128,429 ns 5,479
BM_FakeLua_TableCreate_TCC/1000 193,548 ns 117,177 ns 6,020
BM_FakeLua_TableCreate_TCC/3000 605,946 ns 392,114 ns 1,794
BM_FakeLua_TableCreate_TCC/5000 1,235,125 ns 705,496 ns 988
BM_FakeLua_TableInsert_GCC/100 5,796 ns 3,230 ns 217,272
BM_FakeLua_TableInsert_GCC/1000 37,577 ns 23,234 ns 30,067
BM_FakeLua_TableInsert_GCC/500 18,496 ns 12,007 ns 57,879
BM_FakeLua_TableInsert_GCC/5000 230,109 ns 141,009 ns 4,927
BM_FakeLua_TableInsert_TCC/100 25,990 ns 14,008 ns 51,081
BM_FakeLua_TableInsert_TCC/1000 190,463 ns 121,881 ns 5,882
BM_FakeLua_TableInsert_TCC/500 122,192 ns 62,347 ns 11,427
BM_FakeLua_TableInsert_TCC/5000 1,128,122 ns 726,417 ns 929
BM_FakeLua_TableMove_GCC/100 8,264 ns 5,510 ns 123,002
BM_FakeLua_TableMove_GCC/1000 65,516 ns 40,768 ns 17,565
BM_FakeLua_TableMove_GCC/500 31,437 ns 20,959 ns 33,710
BM_FakeLua_TableMove_GCC/5000 415,416 ns 250,364 ns 2,806
BM_FakeLua_TableMove_TCC/100 40,035 ns 23,025 ns 30,393
BM_FakeLua_TableMove_TCC/1000 291,431 ns 196,812 ns 3,556
BM_FakeLua_TableMove_TCC/500 148,661 ns 99,540 ns 7,076
BM_FakeLua_TableMove_TCC/5000 1,689,098 ns 1,175,769 ns 595
BM_FakeLua_TablePack_GCC/1 1,240 ns 784 ns 894,882
BM_FakeLua_TablePack_TCC/1 3,413 ns 1,830 ns 383,737
BM_FakeLua_TableRemove_GCC/100 10,904 ns 5,496 ns 128,245
BM_FakeLua_TableRemove_GCC/1000 84,466 ns 46,212 ns 15,196
BM_FakeLua_TableRemove_GCC/500 37,355 ns 23,386 ns 28,737
BM_FakeLua_TableRemove_GCC/5000 430,685 ns 256,491 ns 2,710
BM_FakeLua_TableRemove_TCC/100 41,184 ns 23,119 ns 30,006
BM_FakeLua_TableRemove_TCC/1000 419,694 ns 215,409 ns 3,251
BM_FakeLua_TableRemove_TCC/500 177,077 ns 107,216 ns 6,561
BM_FakeLua_TableRemove_TCC/5000 1,793,838 ns 1,185,962 ns 589
BM_FakeLua_TableSort_GCC/100 44,298 ns 28,004 ns 25,024
BM_FakeLua_TableSort_GCC/1000 562,565 ns 330,027 ns 2,138
BM_FakeLua_TableSort_GCC/500 271,424 ns 154,615 ns 4,519
BM_FakeLua_TableSort_TCC/100 66,261 ns 39,107 ns 17,856
BM_FakeLua_TableSort_TCC/1000 730,477 ns 431,083 ns 1,617
BM_FakeLua_TableSort_TCC/500 306,301 ns 206,069 ns 3,371
BM_FakeLua_TailRecursion_GCC/100 777 ns 426 ns 1,648,769
BM_FakeLua_TailRecursion_GCC/1000 1,205 ns 712 ns 979,895
BM_FakeLua_TailRecursion_GCC/5000 3,796 ns 1,951 ns 358,052
BM_FakeLua_TailRecursion_TCC/100 1,584 ns 927 ns 759,379
BM_FakeLua_TailRecursion_TCC/1000 9,233 ns 5,203 ns 100,000
BM_FakeLua_TailRecursion_TCC/5000 42,186 ns 24,371 ns 29,042
BM_FakeLua_ToNumber_GCC/1 802 ns 542 ns 1,304,733
BM_FakeLua_ToNumber_TCC/1 1,150 ns 693 ns 1,016,080
BM_FakeLua_ToString_GCC/10 1,194 ns 647 ns 1,097,100
BM_FakeLua_ToString_GCC/100 979 ns 646 ns 1,079,352
BM_FakeLua_ToString_GCC/500 1,059 ns 650 ns 1,080,277
BM_FakeLua_ToString_TCC/10 1,174 ns 701 ns 1,016,080
BM_FakeLua_ToString_TCC/100 1,203 ns 700 ns 987,485
BM_FakeLua_ToString_TCC/500 959 ns 701 ns 999,183
BM_FakeLua_Variadic_GCC/1 1,215 ns 754 ns 928,022
BM_FakeLua_Variadic_TCC/1 2,233 ns 1,224 ns 575,243
BM_FakeLua_Vector3_GCC/10000 607,809 ns 309,974 ns 2,261
BM_FakeLua_Vector3_GCC/100000 4,839,630 ns 3,056,228 ns 228
BM_FakeLua_Vector3_GCC/1000000 47,773,627 ns 30,897,897 ns 22
BM_FakeLua_Vector3_TCC/10000 3,344,400 ns 2,091,722 ns 331
BM_FakeLua_Vector3_TCC/100000 42,147,447 ns 21,209,412 ns 33
BM_FakeLua_Vector3_TCC/1000000 347,663,874 ns 210,547,754 ns 3
BM_Lua_BinarySearch/100 60,634 ns 37,029 ns 18,896
BM_Lua_BinarySearch/1000 959,697 ns 580,933 ns 1,221
BM_Lua_BinarySearch/500 440,300 ns 254,492 ns 2,758
BM_Lua_BubbleSort/100 594,801 ns 338,786 ns 2,093
BM_Lua_BubbleSort/200 2,086,556 ns 1,328,612 ns 534
BM_Lua_BubbleSort/50 164,153 ns 85,624 ns 8,213
BM_Lua_Closure/100 39,957 ns 22,696 ns 30,670
BM_Lua_Closure/1000 348,764 ns 226,293 ns 3,086
BM_Lua_EmptyCall/10000 722,370 ns 439,736 ns 1,597
BM_Lua_EmptyCall/100000 7,933,740 ns 4,354,814 ns 159
BM_Lua_FastPow/1234567/7654321/1000000007 1,930 ns 1,152 ns 594,367
BM_Lua_FastPow/2/1000/1000000007 1,039 ns 593 ns 1,199,681
BM_Lua_FastPow/7/1000000/1000000007 1,725 ns 974 ns 722,218
BM_Lua_Fibonacci/20 1,569,773 ns 860,801 ns 824
BM_Lua_Fibonacci/25 15,600,871 ns 9,626,976 ns 72
BM_Lua_Fibonacci/30 168,261,430 ns 106,484,626 ns 7
BM_Lua_Fibonacci/32 503,047,483 ns 277,915,868 ns 3
BM_Lua_FloatPoly/1000000 195,928,101 ns 99,944,530 ns 7
BM_Lua_GCD/123456789/987654321 337 ns 212 ns 3,268,053
BM_Lua_GCD/2147483647/1073741823 370 ns 191 ns 3,676,078
BM_Lua_GCD/832040/514229 1,132 ns 730 ns 942,430
BM_Lua_HashInsert/100 87,286 ns 48,607 ns 14,714
BM_Lua_HashInsert/1000 786,406 ns 499,118 ns 1,378
BM_Lua_HashInsert/500 378,706 ns 241,489 ns 2,867
BM_Lua_HashLookup/100 68,701 ns 39,114 ns 17,775
BM_Lua_HashLookup/1000 649,131 ns 414,686 ns 1,713
BM_Lua_HashLookup/500 315,722 ns 205,240 ns 3,408
BM_Lua_InsertionSort/100 389,213 ns 228,283 ns 3,094
BM_Lua_InsertionSort/200 1,452,926 ns 894,653 ns 782
BM_Lua_InsertionSort/50 92,414 ns 59,708 ns 11,653
BM_Lua_MatMul 5,810 ns 3,698 ns 190,328
BM_Lua_MathExpLog/100000 30,397,983 ns 17,460,595 ns 41
BM_Lua_MathMinMax/100000 36,855,906 ns 22,431,932 ns 31
BM_Lua_MathSqrt/100000 11,202,131 ns 6,162,470 ns 112
BM_Lua_MathTrig/100000 28,341,267 ns 17,880,549 ns 39
BM_Lua_MixedAlloc/100 148,240 ns 87,270 ns 8,030
BM_Lua_MixedAlloc/1000 1,718,443 ns 897,348 ns 810
BM_Lua_MixedAlloc/500 703,958 ns 442,235 ns 1,559
BM_Lua_MultiReturn/1000 96,520 ns 59,128 ns 11,867
BM_Lua_MultiReturn/10000 926,960 ns 582,937 ns 1,229
BM_Lua_NestedTable/1000 466,508 ns 292,829 ns 2,366
BM_Lua_NestedTable/10000 5,063,234 ns 2,900,521 ns 240
BM_Lua_Popcount/1000 240,702 ns 144,200 ns 4,801
BM_Lua_Popcount/10000 2,783,275 ns 1,828,025 ns 382
BM_Lua_Popcount/100000 35,208,870 ns 22,105,500 ns 32
BM_Lua_PowMod/1234567/7654321/1000000007 2,090 ns 1,299 ns 544,422
BM_Lua_PowMod/2/1000/1000000007 1,028 ns 661 ns 1,072,320
BM_Lua_PowMod/7/1000000/1000000007 2,075 ns 1,100 ns 631,710
BM_Lua_Recursion/10 13,957 ns 8,364 ns 81,503
BM_Lua_Recursion/20 1,412,171 ns 1,043,444 ns 689
BM_Lua_Recursion/25 17,663,822 ns 11,536,223 ns 61
BM_Lua_Sieve/100 15,105 ns 9,868 ns 70,790
BM_Lua_Sieve/1000 131,859 ns 75,406 ns 9,411
BM_Lua_Sieve/500 59,479 ns 39,012 ns 17,749
BM_Lua_Sieve/5000 537,121 ns 378,408 ns 1,865
BM_Lua_StringByte/10 498 ns 303 ns 2,260,816
BM_Lua_StringByte/100 760 ns 460 ns 1,530,782
BM_Lua_StringByte/1000 927 ns 624 ns 1,147,141
BM_Lua_StringChar/10 4,724 ns 3,004 ns 233,911
BM_Lua_StringChar/100 26,038 ns 17,295 ns 40,665
BM_Lua_StringChar/500 115,847 ns 75,332 ns 9,010
BM_Lua_StringChurn/100 124,238 ns 72,452 ns 9,398
BM_Lua_StringChurn/1000 1,713,625 ns 971,816 ns 707
BM_Lua_StringChurn/500 726,842 ns 474,138 ns 1,477
BM_Lua_StringFind/10 816 ns 457 ns 1,510,131
BM_Lua_StringFind/100 1,002 ns 571 ns 1,225,626
BM_Lua_StringFind/1000 1,076 ns 756 ns 933,030
BM_Lua_StringFind/10000 3,359 ns 2,139 ns 327,326
BM_Lua_StringFindPattern/1000 1,536,606 ns 938,600 ns 753
BM_Lua_StringFormat/10 4,810 ns 2,816 ns 249,862
BM_Lua_StringFormat/100 45,648 ns 28,036 ns 25,220
BM_Lua_StringFormat/500 217,375 ns 138,971 ns 5,005
BM_Lua_StringGmatch/1000 1,797,588 ns 1,101,192 ns 634
BM_Lua_StringGsub/10 1,551 ns 942 ns 743,199
BM_Lua_StringGsub/100 7,349 ns 4,529 ns 155,040
BM_Lua_StringGsub/1000 67,386 ns 37,743 ns 18,523
BM_Lua_StringLen/10 255 ns 169 ns 4,208,529
BM_Lua_StringLen/100 512 ns 317 ns 2,210,217
BM_Lua_StringLen/1000 625 ns 491 ns 1,417,701
BM_Lua_StringLen/10000 2,719 ns 1,979 ns 358,597
BM_Lua_StringLower/10 596 ns 322 ns 2,189,914
BM_Lua_StringLower/100 1,225 ns 747 ns 942,770
BM_Lua_StringLower/1000 3,564 ns 2,181 ns 320,649
BM_Lua_StringLower/10000 29,966 ns 17,111 ns 41,238
BM_Lua_StringRep/10 737 ns 408 ns 1,705,699
BM_Lua_StringRep/100 1,822 ns 997 ns 694,622
BM_Lua_StringRep/1000 9,142 ns 5,390 ns 126,264
BM_Lua_StringReverse/10 597 ns 307 ns 2,261,963
BM_Lua_StringReverse/100 1,182 ns 706 ns 961,826
BM_Lua_StringReverse/1000 3,323 ns 1,913 ns 365,656
BM_Lua_StringReverse/10000 24,703 ns 14,399 ns 48,160
BM_Lua_StringSub/10 617 ns 364 ns 1,942,516
BM_Lua_StringSub/100 1,105 ns 594 ns 1,177,842
BM_Lua_StringSub/1000 1,379 ns 906 ns 766,324
BM_Lua_StringSub/10000 4,908 ns 3,045 ns 231,995
BM_Lua_StringUpper/10 567 ns 323 ns 2,190,345
BM_Lua_StringUpper/100 1,342 ns 735 ns 951,815
BM_Lua_StringUpper/1000 3,109 ns 1,965 ns 355,243
BM_Lua_StringUpper/10000 27,760 ns 14,242 ns 48,029
BM_Lua_Sum/10000 180,892 ns 92,068 ns 7,391
BM_Lua_Sum/100000 1,380,171 ns 911,977 ns 771
BM_Lua_Sum/1000000 16,461,078 ns 9,233,507 ns 76
BM_Lua_Sum/5000000 74,960,840 ns 46,977,732 ns 15
BM_Lua_TableChurn/100 88,809 ns 61,258 ns 11,328
BM_Lua_TableChurn/1000 820,002 ns 602,970 ns 1,148
BM_Lua_TableChurn/500 477,274 ns 305,247 ns 2,384
BM_Lua_TableConcat/100 71,908 ns 36,736 ns 19,340
BM_Lua_TableConcat/1000 585,304 ns 361,357 ns 1,936
BM_Lua_TableConcat/500 325,897 ns 177,956 ns 3,874
BM_Lua_TableCreate/1000 47,111 ns 29,524 ns 23,831
BM_Lua_TableCreate/3000 138,745 ns 86,404 ns 8,046
BM_Lua_TableCreate/5000 257,284 ns 145,201 ns 4,849
BM_Lua_TableInsert/100 23,857 ns 13,362 ns 53,418
BM_Lua_TableInsert/1000 208,845 ns 116,643 ns 5,895
BM_Lua_TableInsert/500 107,318 ns 57,789 ns 11,379
BM_Lua_TableInsert/5000 928,408 ns 564,608 ns 1,170
BM_Lua_TableMove/100 12,817 ns 8,743 ns 81,064
BM_Lua_TableMove/1000 92,904 ns 50,879 ns 10,000
BM_Lua_TableMove/500 44,285 ns 28,002 ns 25,009
BM_Lua_TableMove/5000 355,241 ns 250,016 ns 2,787
BM_Lua_TablePack/1 2,840 ns 1,516 ns 462,846
BM_Lua_TableRemove/100 24,388 ns 17,343 ns 40,851
BM_Lua_TableRemove/1000 261,457 ns 152,441 ns 4,709
BM_Lua_TableRemove/500 126,597 ns 76,961 ns 9,300
BM_Lua_TableRemove/5000 1,354,665 ns 828,342 ns 831
BM_Lua_TableSort/100 42,572 ns 30,042 ns 23,123
BM_Lua_TableSort/1000 714,671 ns 398,060 ns 1,749
BM_Lua_TableSort/500 289,863 ns 184,677 ns 3,803
BM_Lua_TailRecursion/100 8,300 ns 4,805 ns 160,595
BM_Lua_TailRecursion/1000 73,087 ns 42,646 ns 15,958
BM_Lua_TailRecursion/5000 346,152 ns 209,783 ns 3,406
BM_Lua_ToNumber/1 529 ns 285 ns 2,447,960
BM_Lua_ToString/10 903 ns 478 ns 1,479,778
BM_Lua_ToString/100 922 ns 481 ns 1,460,211
BM_Lua_ToString/500 739 ns 477 ns 1,451,251
BM_Lua_Variadic/1 1,069 ns 685 ns 1,026,991
BM_Lua_Vector3/10000 2,302,920 ns 1,493,404 ns 464
BM_Lua_Vector3/100000 24,833,907 ns 14,947,118 ns 46
BM_Lua_Vector3/1000000 239,352,621 ns 149,734,385 ns 5