diff --git a/fibonacci/fish/code.fish b/fibonacci/fish/code.fish new file mode 100755 index 00000000..52a953bc --- /dev/null +++ b/fibonacci/fish/code.fish @@ -0,0 +1,18 @@ +#!/usr/bin/env fish + +function fibonacci + if test $argv[1] -eq 0 + echo 0 + else if test $argv[1] -eq 1 + echo 1 + else + echo (fibonacci (math $argv[1] - 1)) + (fibonacci (math $argv[1] - 2)) + end +end + +set -l u (math $argv[1] - 1) +set -l r 0 +for i in (seq 0 $u) + set r (math $r + (fibonacci $i)) +end +echo $r diff --git a/loops/fish/code.fish b/loops/fish/code.fish new file mode 100755 index 00000000..2c84071e --- /dev/null +++ b/loops/fish/code.fish @@ -0,0 +1,16 @@ +#!/usr/bin/env fish + +set -l u (math $argv[1]) +set -l r (math (random) % 10000) +set -l a +for i in (seq 10000) + set -a a 0 +end + +for i in (seq 10000) + for j in (seq 100000) + set a[$i] (math $a[$i] + $j % $u) + end + set a[$i] (math $a[$i] + $r) +end +echo $a[$r] diff --git a/run.sh b/run.sh index dc7e2793..7a34542d 100755 --- a/run.sh +++ b/run.sh @@ -169,35 +169,54 @@ function run_benchmark { echo "Done running $(basename ${PWD}) benchmark" } -available_benchmarks=("loops" "fibonacci" "levenshtein" "hello-world") -benchmarks_to_run_paths=() -current_benchmark=$(basename "${PWD}") - -benchmark_found=false -for benchmark in "${available_benchmarks[@]}"; do - if [[ "${benchmark}" == "${current_benchmark}" ]]; then - benchmark_found=true - break - fi -done - -if [ "${benchmark_found}" = true ]; then # regular, single, benchmark run - benchmarks_to_run_paths=("${PWD}") -else # run all benchmarks - benchmarks_to_run=() - for benchmark in "${available_benchmarks[@]}"; do - unset override_input_value # Custom input arg doesn't work for this run type - if [ -d "${PWD}/${benchmark}" ]; then - benchmarks_to_run+=("${benchmark}") - benchmarks_to_run_paths+=("${PWD}/${benchmark}") - fi - done - echo "Running benchmarks: ${benchmarks_to_run[*]}" -fi - -for benchmark_dir in "${benchmarks_to_run_paths[@]}"; do - echo - run_benchmark "${benchmark_dir}" -done - -echo "Results were written to: ${results_file}" \ No newline at end of file +run "Dart" "./dart/code 40" +run "Objective-C" "./objc/code 40" +run "Kotlin JVM" "java -jar kotlin/code.jar 40" +run "Kotlin Native" "./kotlin/code.kexe 40" +run "C" "./c/code 40" +run "Rust" "./rust/target/release/code 40" +run "Node" "node ./js/code.js 40" +run "Bun" "bun ./js/code.js 40" +run "Bun (Compiled)" "./js/bun 40" +run "Deno" "deno ./js/code.js 40" +run "PyPy" "pypy ./py/code.py 40" +run "CPP" "./cpp/code 40" +run "Go" "./go/code 40" +run "Node (jitless)" "node --jitless ./js/code.js 40" +run "Bun (jitless)" "bun ./js/code.js 40" "BUN_JSC_useJIT=0" +run "Deno (jitless)" "deno --v8-flags=--jitless ./js/code.js 40" +run "PyPy" "pypy ./py/code.py 40" +run "Java" "java jvm.code 40" +#run "Java GraalVM" "./jvm.code 40" +run "Scala" "./scala/code 40" +run "Ruby" "ruby ./ruby/code.rb 40" +run "PHP JIT" "php -dopcache.enable_cli=1 -dopcache.jit=on -dopcache.jit_buffer_size=64M ./php/code.php 40" +run "PHP" "php ./php/code.php 40" +run "R" "Rscript ./r/code.R 40" +run "Python" "python3.13 ./py/code.py 40" +run "Common Lisp" "common-lisp/code 40" +run "Zig" "./zig/code 40" +run "Inko" "./inko/code 40" +run "Nim" "./nim/code 40" +run "Free Pascal" "./fpc/code 40" +run "Crystal" "./crystal/code 40" +#run "Ada" "./ada/code 40" +#run "D" "./d/code 40" # Seems to not have an arm / M1 version +run "Odin" "./odin/code 40" +run "Fortran" "./fortran/code 40" +run "LuaJIT" "luajit ./lua/code 40" +run "Lua" "lua ./lua/code.lua 40" +run "Swift" "./swift/code 40" +run "Julia" "julia ./julia/code.jl 40" +#run "Haxe JVM" "java -jar haxe/code.jar 40" # was getting errors running `haxelib install hxjava` +run "Elixir" "elixir elixir/bench.exs 40" +#run "C# AOT" "./csharp-aot/code/csharp 40" +run "C#" "./csharp/code/csharp 40" +run "Ruby" "ruby ./ruby/code.rb 40" +run "Ruby YJIT" "miniruby --yjit ./ruby/code.rb 40" +run "Haskell" "./hs/code 40" +run "AWK" "awk -f ./awk/code.awk 40" +run "MAWK" "mawk -f ./awk/code.awk 40" +run "Clojure" "java -cp clojure/classes:$(clojure -Spath) code 40" +run "Babashka" "bb -cp clojure -m code 40" +run "Fish" "./fish/code.fish 40"