Skip to content

hemlang/barbell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

barbell 🏋️

Benchmark suite for comparing language performance across Hemlock, HemlockC, C, Python, and JavaScript.

Benchmarks

Micro-benchmarks

  • fib - Recursive Fibonacci (CPU-bound, function call overhead)
  • array_sum - Sum large array (memory access, iteration)
  • string_concat - String concatenation (allocation, GC pressure)
  • primes_sieve - Sieve of Eratosthenes (array access, loops)
  • hash_table - Hash table insert/lookup/delete (dictionary operations)

Algorithms

  • quicksort - Quicksort algorithm (recursion, array manipulation)
  • merge_sort - Merge sort algorithm (recursion, array copying)
  • binary_tree - Binary search tree insert and traversal (object allocation, recursion)
  • graph_bfs - Breadth-first search on graph (queue operations, adjacency list traversal)
  • matrix_multiply - Matrix multiplication (2D arrays, nested loops, floating point)

Real-world

  • json_serialize - JSON serialization (object creation, string building)
  • json_deserialize - JSON parsing (string parsing, object creation)
  • hash_sha256 - SHA-256 hashing (bitwise operations, loops, array manipulation)
  • http_test - HTTP request/response building and parsing (string operations)

Usage

./run.sh              # Run all benchmarks
./run.sh fib          # Run specific benchmark
./run.sh --quick      # Quick mode (smaller inputs)

Results

Results are output as JSON for easy comparison and visualization.

Adding a benchmark

  1. Create implementations in benchmarks/<name>/ for each language
  2. Add benchmark config to benchmarks.json
  3. Run ./run.sh <name> to test

About

Hemlock, HemlockC, C, Javascript, Python benchmark suite

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors