Files
lux/benchmarks/binarytrees.js
Brandon Lucas 42fef80a47 feat: add comprehensive benchmark suite with multi-language comparison
Add benchmarks comparing Lux against 7 languages:
- Rust, C, Go (compiled)
- Node.js, Bun (JavaScript JIT)
- Python (interpreted)

Benchmarks:
- Fibonacci (fib 35): recursive function calls
- Prime counting (10k): loops and conditionals
- Sum loop (10M): tight numeric loops
- Ackermann (3,10): deep recursion
- Selection sort (1k): sorting algorithm
- List operations (10k): map/filter/fold with closures

Results show Lux:
- Matches C and Rust performance
- 2-5x faster than Go
- 7-15x faster than Node.js
- 10-285x faster than Python

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 16:17:06 -05:00

41 lines
1015 B
JavaScript

// Binary Trees benchmark - recursive data structures
class Tree {
constructor(left, right) {
this.left = left;
this.right = right;
}
}
function make(depth) {
if (depth === 0) return null;
return new Tree(make(depth - 1), make(depth - 1));
}
function check(tree) {
if (tree === null) return 1;
return 1 + check(tree.left) + check(tree.right);
}
const minDepth = 4;
const maxDepth = 14;
// Stretch tree
const stretchDepth = maxDepth + 1;
const stretchTree = make(stretchDepth);
console.log(`stretch tree check: ${check(stretchTree)}`);
// Long lived tree
const longLivedTree = make(maxDepth);
// Iterate through depths
for (let depth = minDepth; depth <= maxDepth; depth += 2) {
const iterations = 1 << (maxDepth - depth + 4);
let sum = 0;
for (let i = 0; i < iterations; i++) {
sum += check(make(depth));
}
console.log(`${iterations} trees of depth ${depth} check: ${sum}`);
}
console.log(`long lived tree check: ${check(longLivedTree)}`);