Skip to content
Permalink
Browse files
Add benchmarking.
  • Loading branch information
steveklabnik committed Jul 1, 2014
1 parent 975e096 commit bf786012a9a0e3e562c4a8f0a2192d4884a21531
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 0 deletions.
@@ -8,3 +8,42 @@ $ ./target/fibs
$ ./target/fibs2
$ ./target/fibs3
```

To benchmark:

Cargo doesn't have a bench command yet, so you have to fudge it:

```bash
$ cargo test
$ target/tests/fibs1 --bench
$ target/tests/fibs2 --bench
$ target/tests/fibs3 --bench
```

On my system:

```
steve@computer:~/tmp/fibs$ target/tests/fibs1 --bench
running 1 test
test bench_fib_of_40000000 ... bench: 624 ns/iter (+/- 10)
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
steve@computer:~/tmp/fibs$ target/tests/fibs2 --bench
running 1 test
test bench_fib_of_40000000 ... bench: 705 ns/iter (+/- 10)
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
steve@computer:~/tmp/fibs$ target/tests/fibs3 --bench
running 1 test
test bench_fib_of_40000000 ... bench: 1194 ns/iter (+/- 31)
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
```

I am not sure why the last version is slower...
@@ -1,3 +1,6 @@
extern crate test;
use self::test::Bencher;

fn fib(pred: |x: int| -> bool) {
let mut previous = 1;
let mut current = 1;
@@ -28,3 +31,25 @@ fn main() {
});
println!("sum = {}", sum)
}

#[bench]
fn bench_fib_of_40000000(b: &mut Bencher) {
b.iter(|| {
let mut sum = 0;
fib(|i| -> bool {
if i > 4000000 {
// more or less a `break`
return false
}

if i % 2 != 0 {
// more or less `next`
return true
}

sum += i;

true
});
});
}
@@ -1,3 +1,6 @@
extern crate test;
use self::test::Bencher;

struct FibIter {
previous: int,
current: int
@@ -28,3 +31,18 @@ fn main() {
}
println!("sum = {}", sum);
}

#[bench]
fn bench_fib_of_40000000(b: &mut Bencher) {
b.iter(|| {
let mut sum = 0;
for i in fib_iter() {
if i > 4000000 {
break;
}
if i % 2 == 0 {
sum += i;
}
}
});
}
@@ -1,3 +1,6 @@
extern crate test;
use self::test::Bencher;

struct FibIter {
previous: int,
current: int
@@ -23,3 +26,13 @@ fn main() {
.fold(0, |acc, i| acc + i);
println!("sum = {}", sum);
}

#[bench]
fn bench_fib_of_40000000(b: &mut Bencher) {
b.iter(|| {
let sum = fib_iter()
.take_while(|&i| i < 4000000)
.filter(|&i| i % 2 == 0)
.fold(0, |acc, i| acc + i);
});
}

0 comments on commit bf78601

Please sign in to comment.