bench: Update shootout-fibo for performance
This commit is contained in:
parent
bc77d7bdb0
commit
492dba8bfe
1 changed files with 15 additions and 14 deletions
|
@ -1,19 +1,20 @@
|
||||||
|
use std;
|
||||||
|
|
||||||
|
|
||||||
// -*- rust -*-
|
|
||||||
fn fib(n: int) -> int {
|
fn fib(n: int) -> int {
|
||||||
|
if n < 2 {
|
||||||
|
ret 1;
|
||||||
// Several of the posted 'benchmark' versions of this compute the
|
} else {
|
||||||
// wrong Fibonacci numbers, of course.
|
ret fib(n - 1) + fib(n - 2);
|
||||||
if n == 0 {
|
}
|
||||||
ret 0;
|
|
||||||
} else { if n <= 2 { ret 1; } else { ret fib(n - 1) + fib(n - 2); } }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main(args: [str]) {
|
||||||
assert (fib(8) == 21);
|
// FIXME: #1527
|
||||||
assert (fib(15) == 610);
|
sys::set_min_stack(1000000u);
|
||||||
log(debug, fib(8));
|
let n = if vec::len(args) == 2u {
|
||||||
log(debug, fib(15));
|
int::from_str(args[1])
|
||||||
|
} else {
|
||||||
|
40
|
||||||
|
};
|
||||||
|
std::io::println(#fmt("%d\n", fib(n)));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue