Last active
March 8, 2019 00:49
-
-
Save adam-hanna/5e303bcfcb24606665da587b83af6bdd to your computer and use it in GitHub Desktop.
Revisions
-
adam-hanna revised this gist
Mar 8, 2019 . 1 changed file with 5 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -4,11 +4,12 @@ YMMV Finished release [optimized] target(s) in 0.78s Running /home/adam/apps/rust-bench-test/target/release/deps/rust_bench_test-5e0b4fbe4a887c9a running 3 tests test bench_gather_borrowed_foos ... bench: 291 ns/iter (+/- 18) test bench_gather_owned_foos ... bench: 333 ns/iter (+/- 9) test bench_passed_borrowed_foos ... bench: 283 ns/iter (+/- 17) test result: ok. 0 passed; 0 failed; 0 ignored; 3 measured; 0 filtered out */ #![feature(test)] -
adam-hanna revised this gist
Mar 7, 2019 . 1 changed file with 27 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -33,18 +33,26 @@ pub fn gather_owned_foos<'a>(data: Vec<Vec<&'a Foo>>) -> Vec<Vec<&'a Foo>> { return ret } pub fn gather_borrowed_foos<'a>(data: &'a Vec<&'a Vec<&'a Foo>>) -> Vec<&'a Vec<&'a Foo>> { let mut ret: Vec<&Vec<&Foo>> = Vec::new(); for i in 0..data.len() { if meets_requirements(data[i]) { ret.push(data[i]); } } return ret } pub fn gather_passed_foos<'a>(data: &'a Vec<&'a Vec<&'a Foo>>, ret: &'a mut Vec<&'a Vec<&'a Foo>>) { for i in 0..data.len() { if meets_requirements(data[i]) { ret.push(data[i]); } } } fn meets_requirements<'a>(_data: &'a Vec<&'a Foo>) -> bool { true } @@ -71,8 +79,23 @@ fn bench_gather_borrowed_foos(b: &mut Bencher) { }; let v1 = vec![&foo, &foo, &foo]; let v2 = vec![&foo, &foo]; let data = vec![&v1, &v2]; gather_borrowed_foos(&data); }); } #[bench] fn bench_passed_borrowed_foos(b: &mut Bencher) { b.iter(|| { let foo = Foo{ bar: String::from("bar"), }; let v1 = vec![&foo, &foo, &foo]; let v2 = vec![&foo, &foo]; let data = vec![&v1, &v2]; let mut ret: Vec<&Vec<&Foo>> = Vec::new(); gather_passed_foos(&data, &mut ret); }); } -
adam-hanna revised this gist
Mar 7, 2019 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -72,6 +72,7 @@ fn bench_gather_borrowed_foos(b: &mut Bencher) { let v1 = vec![&foo, &foo, &foo]; let v2 = vec![&foo, &foo]; let data = vec![v1, v2]; gather_borrowed_foos(&data); }); } -
adam-hanna revised this gist
Mar 7, 2019 . 1 changed file with 7 additions and 8 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -5,7 +5,7 @@ YMMV Running /home/adam/apps/rust-bench-test/target/release/deps/rust_bench_test-5e0b4fbe4a887c9a running 2 tests test bench_gather_borrowed_foos ... bench: 106 ns/iter (+/- 9) test bench_gather_owned_foos ... bench: 121 ns/iter (+/- 85) test result: ok. 0 passed; 0 failed; 0 ignored; 2 measured; 0 filtered out @@ -65,14 +65,13 @@ fn bench_gather_owned_foos(b: &mut Bencher) { #[bench] fn bench_gather_borrowed_foos(b: &mut Bencher) { b.iter(|| { let foo = Foo{ bar: String::from("bar"), }; let v1 = vec![&foo, &foo, &foo]; let v2 = vec![&foo, &foo]; let data = vec![v1, v2]; gather_borrowed_foos(&data); }); } -
adam-hanna created this gist
Mar 6, 2019 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,78 @@ /* YMMV Compiling rust-bench-test v0.1.0 (/home/adam/apps/rust-bench-test) Finished release [optimized] target(s) in 0.78s Running /home/adam/apps/rust-bench-test/target/release/deps/rust_bench_test-5e0b4fbe4a887c9a running 2 tests test bench_gather_borrowed_foos ... bench: 32 ns/iter (+/- 2) test bench_gather_owned_foos ... bench: 121 ns/iter (+/- 85) test result: ok. 0 passed; 0 failed; 0 ignored; 2 measured; 0 filtered out */ #![feature(test)] extern crate test; use test::Bencher; #[derive(Debug)] pub struct Foo { bar: String, } pub fn gather_owned_foos<'a>(data: Vec<Vec<&'a Foo>>) -> Vec<Vec<&'a Foo>> { let mut ret: Vec<Vec<&Foo>> = Vec::new(); for v in data { if meets_requirements(&v) { ret.push(v); } } return ret } pub fn gather_borrowed_foos<'a>(data: &'a Vec<Vec<&'a Foo>>) -> Vec<&'a Vec<&'a Foo>> { let mut ret: Vec<&Vec<&Foo>> = Vec::new(); for i in 0..data.len() { if meets_requirements(&data[i]) { ret.push(&data[i]); } } return ret } fn meets_requirements<'a>(_data: &'a Vec<&'a Foo>) -> bool { true } #[bench] fn bench_gather_owned_foos(b: &mut Bencher) { b.iter(|| { let foo = Foo{ bar: String::from("bar"), }; let v1 = vec![&foo, &foo, &foo]; let v2 = vec![&foo, &foo]; let data = vec![v1, v2]; gather_owned_foos(data); }); } #[bench] fn bench_gather_borrowed_foos(b: &mut Bencher) { let foo = Foo{ bar: String::from("bar"), }; let v1 = vec![&foo, &foo, &foo]; let v2 = vec![&foo, &foo]; let data = vec![v1, v2]; b.iter(|| { gather_borrowed_foos(&data); }); }