performance logarithmic
parent
5274268104
commit
5e3369d9df
@ -0,0 +1,29 @@
|
||||
fn allocate() -> [u64; 1000] {
|
||||
[22; 1000]
|
||||
}
|
||||
|
||||
fn flop(x: f64, y: f64) -> f64 {
|
||||
x * y
|
||||
}
|
||||
|
||||
fn lookup(x: &[u64; 1000]) -> u64 {
|
||||
x[234] * x[345]
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut data = allocate();
|
||||
for _ in 0..1000 {
|
||||
//constant size memory allocation
|
||||
data = allocate();
|
||||
}
|
||||
|
||||
for _ in 0..1000000 {
|
||||
//reference data
|
||||
lookup(&data);
|
||||
}
|
||||
|
||||
for _ in 0..1000000 {
|
||||
//floating point operation
|
||||
flop(2.0, 3.0);
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
extern crate rand;
|
||||
extern crate flame;
|
||||
use std::fs::File;
|
||||
|
||||
fn main() {
|
||||
|
||||
let mut data = vec![0; 1000];
|
||||
for di in 0..data.len() {
|
||||
data[di] = rand::random::<u64>();
|
||||
}
|
||||
|
||||
flame::start("sort n=1000");
|
||||
data.sort();
|
||||
flame::end("sort n=1000");
|
||||
|
||||
flame::start("binary search n=1000 100 times");
|
||||
for _ in 0..100 {
|
||||
let c = rand::random::<u64>();
|
||||
data.binary_search(&c).ok();
|
||||
}
|
||||
flame::end("binary search n=1000 100 times");
|
||||
|
||||
let mut data = vec![0; 10000];
|
||||
for di in 0..data.len() {
|
||||
data[di] = rand::random::<u64>();
|
||||
}
|
||||
|
||||
flame::start("sort n=10000");
|
||||
data.sort();
|
||||
flame::end("sort n=10000");
|
||||
|
||||
flame::start("binary search n=10000 100 times");
|
||||
for _ in 0..100 {
|
||||
let c = rand::random::<u64>();
|
||||
data.binary_search(&c).ok();
|
||||
}
|
||||
flame::end("binary search n=10000 100 times");
|
||||
|
||||
flame::dump_html(&mut File::create("flame-graph.html").unwrap()).unwrap();
|
||||
|
||||
}
|
Loading…
Reference in New Issue