aboutsummaryrefslogtreecommitdiff
path: root/src/tests/example_stack
diff options
context:
space:
mode:
authorAria Shrimpton <me@aria.rip>2024-02-27 09:41:23 +0000
committerAria Shrimpton <me@aria.rip>2024-02-27 09:41:23 +0000
commitfad685c53308f9fd7a449f23d5123ee56080e51b (patch)
tree8e483e5caa380208320ecb05c14e32fc11f7c9a8 /src/tests/example_stack
parentabc050060403d0d41c1a7c4a5e29b8b26f6e5d1b (diff)
cleanup example_ benchmarks
Diffstat (limited to 'src/tests/example_stack')
-rw-r--r--src/tests/example_stack/Cargo.toml2
-rw-r--r--src/tests/example_stack/benches/do_stuff.rs10
-rw-r--r--src/tests/example_stack/benches/main.rs16
-rw-r--r--src/tests/example_stack/src/lib.rs18
-rw-r--r--src/tests/example_stack/src/types.pr.rs2
5 files changed, 28 insertions, 20 deletions
diff --git a/src/tests/example_stack/Cargo.toml b/src/tests/example_stack/Cargo.toml
index 55e4338..7207622 100644
--- a/src/tests/example_stack/Cargo.toml
+++ b/src/tests/example_stack/Cargo.toml
@@ -12,5 +12,5 @@ primrose-library = { path = "../../crates/library" }
criterion = { workspace = true }
[[bench]]
-name = "do_stuff"
+name = "main"
harness = false
diff --git a/src/tests/example_stack/benches/do_stuff.rs b/src/tests/example_stack/benches/do_stuff.rs
deleted file mode 100644
index 91f21fb..0000000
--- a/src/tests/example_stack/benches/do_stuff.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-use criterion::{criterion_group, criterion_main, Criterion};
-
-fn run_benches(c: &mut Criterion) {
- c.bench_function("example_stack-do_something", |b| {
- b.iter(|| example_stack::do_something())
- });
-}
-
-criterion_group!(benches, run_benches);
-criterion_main!(benches);
diff --git a/src/tests/example_stack/benches/main.rs b/src/tests/example_stack/benches/main.rs
new file mode 100644
index 0000000..575d045
--- /dev/null
+++ b/src/tests/example_stack/benches/main.rs
@@ -0,0 +1,16 @@
+use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
+
+fn run_benches(c: &mut Criterion) {
+ for size in [500, 10_000, 50_000].iter() {
+ c.bench_with_input(
+ BenchmarkId::new("example_stack-push_pop", size),
+ size,
+ |b, &n| {
+ b.iter(|| example_stack::push_pop(n));
+ },
+ );
+ }
+}
+
+criterion_group!(benches, run_benches);
+criterion_main!(benches);
diff --git a/src/tests/example_stack/src/lib.rs b/src/tests/example_stack/src/lib.rs
index 086dd6a..8ddaf92 100644
--- a/src/tests/example_stack/src/lib.rs
+++ b/src/tests/example_stack/src/lib.rs
@@ -1,14 +1,16 @@
#![feature(type_alias_impl_trait)]
mod types;
-use primrose_library::traits::Container;
+
+use primrose_library::traits::Stack;
+use std::hint::black_box;
use types::*;
-pub fn do_something() {
- let mut c = StackCon::<u32>::default();
- for x in 0..10 {
- c.insert(x);
- c.insert(x);
- //c.first();
+pub fn push_pop(n: usize) {
+ let mut c = StackCon::default();
+ for x in 0..n {
+ c.push(x);
+ }
+ for _ in 0..n {
+ black_box(|x| x)(c.pop());
}
- assert_eq!(c.len(), 20);
}
diff --git a/src/tests/example_stack/src/types.pr.rs b/src/tests/example_stack/src/types.pr.rs
index c45bb34..38fac79 100644
--- a/src/tests/example_stack/src/types.pr.rs
+++ b/src/tests/example_stack/src/types.pr.rs
@@ -3,5 +3,5 @@ property lifo<T> {
\c <: (Stack) -> (forall \x -> ((equal? (op-pop ((op-push c) x))) x))
}
-type StackCon<S> = {c impl (Container, Stack) | (lifo c)}
+type StackCon<S> = {c impl (Stack) | (lifo c)}
*ENDSPEC*/