Avatar for the ArkScript-lang user
ArkScript-lang
Ark
BlogDocsChangelog

Optimize non-tailrec recursive function calls

#561Merged
Comparing
opti/self-calls
(
804553f
) with
dev
(
4f99b4e
)
CodSpeed Performance Gauge
+21%
Improvements
7
Regressions
0
Untouched
10
New
0
Dropped
0
Ignored
0

Benchmarks

Improved

fibonacci
tests/benchmarks/main.cpp::fibonacci
CodSpeed Performance Gauge
+21%
33.6 ms
27.8 ms
ackermann
tests/benchmarks/main.cpp::ackermann
CodSpeed Performance Gauge
+12%
347.2 ms
309.9 ms
binary_trees
tests/benchmarks/main.cpp::binary_trees
CodSpeed Performance Gauge
+9%
5.1 s
4.7 s
create_closure
tests/benchmarks/main.cpp::create_closure
CodSpeed Performance Gauge
+7%
4.8 ms
4.5 ms
quicksort
tests/benchmarks/main.cpp::quicksort
CodSpeed Performance Gauge
+4%
1.1 ms
1.1 ms
create_list
tests/benchmarks/main.cpp::create_list
CodSpeed Performance Gauge
+2%
6.7 ms
6.6 ms
n_queens
tests/benchmarks/main.cpp::n_queens
CodSpeed Performance Gauge
+2%
113.3 ms
110.8 ms

Passed

Welder - Simple - 39 nodes[0]
Welder - Simple - 39 nodes[0]
CodSpeed Performance Gauge
0%
928.3 µs
924.8 µs
New parser - Medium - 83 nodes[1]
New parser - Medium - 83 nodes[1]
CodSpeed Performance Gauge
0%
853.5 µs
851.5 µs
New parser - Big - 665 nodes[2]
New parser - Big - 665 nodes[2]
CodSpeed Performance Gauge
0%
9.7 ms
9.6 ms
Welder - Big - 665 nodes[2]
Welder - Big - 665 nodes[2]
CodSpeed Performance Gauge
0%
34.2 ms
34.1 ms
New parser - Bigger[3]
New parser - Bigger[3]
CodSpeed Performance Gauge
0%
39.2 ms
39.2 ms
Welder - Bigger[3]
Welder - Bigger[3]
CodSpeed Performance Gauge
0%
63 ms
63 ms
for_sum
tests/benchmarks/main.cpp::for_sum
CodSpeed Performance Gauge
0%
977.2 ms
977.2 ms
builtins
tests/benchmarks/main.cpp::builtins
CodSpeed Performance Gauge
0%
3.7 ms
3.7 ms
New parser - Simple - 39 nodes[0]
New parser - Simple - 39 nodes[0]
CodSpeed Performance Gauge
0%
336.1 µs
336.2 µs
Welder - Medium - 83 nodes[1]
Welder - Medium - 83 nodes[1]
CodSpeed Performance Gauge
0%
1.8 ms
1.8 ms

Commits

Click on a commit to change the comparison range
Base
dev
4f99b4e
+21%
feat(compiler, vm): new GET_CURRENT_PAGE_ADDRESS instruction and CALL_CURRENT_PAGE super instruction to avoid a local variable lookup when performing a recursive non-tail call
804553f
22 days ago
by SuperFola
© 2025 CodSpeed Technology
Home Terms Privacy Docs