aboutsummaryrefslogtreecommitdiffstats
path: root/benches/tihdy_benchmark.rs
diff options
context:
space:
mode:
Diffstat (limited to 'benches/tihdy_benchmark.rs')
-rw-r--r--benches/tihdy_benchmark.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/benches/tihdy_benchmark.rs b/benches/tihdy_benchmark.rs
new file mode 100644
index 0000000..f639fb0
--- /dev/null
+++ b/benches/tihdy_benchmark.rs
@@ -0,0 +1,42 @@
+use criterion::{criterion_group, criterion_main, Criterion};
+use std::path::Path;
+
+pub fn fib_50(c: &mut Criterion) {
+ let prog =
+"
+j := 0
+for , j < 1000, j = j + 1 {
+ a := 0
+ b := 1
+
+ for i := 0, i < 50, i = i + 1 {
+ c := a
+ a = b
+ b = c + b
+ }
+ a <=> 12586269025
+}
+";
+ let compiled = tihdy::compiler::compile("main", Path::new("prog"), tihdy::tokenizer::string_to_tokens(prog)).unwrap();
+ c.bench_function("fib 50", |b| b.iter(|| tihdy::vm::run_block(&compiled).unwrap()));
+}
+
+pub fn fib_90(c: &mut Criterion) {
+ let prog =
+"
+a := 0
+b := 1
+
+for i := 0, i < 90, i = i + 1 {
+ c := a
+ a = b
+ b = c + b
+}
+a <=> 2880067194370816120
+";
+ let compiled = tihdy::compiler::compile("main", Path::new("prog"), tihdy::tokenizer::string_to_tokens(prog)).unwrap();
+ c.bench_function("fib 90", |b| b.iter(|| tihdy::vm::run_block(&compiled).unwrap()));
+}
+
+criterion_group!(benches, fib_50, fib_90);
+criterion_main!(benches);