Created
September 8, 2015 07:52
-
-
Save llogiq/4557032bdf18a2cff136 to your computer and use it in GitHub Desktop.
This file contains 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 characters
//! rustc -C opt-level=3 --test cowbell.rs && ./cowbell --bench | |
//! | |
//! running 8 tests | |
//! test empty ... bench: 0 ns/iter (+/- 0) | |
//! test format_str ... bench: 70 ns/iter (+/- 2) | |
//! test format_str_cow ... bench: 76 ns/iter (+/- 0) | |
//! test format_string ... bench: 75 ns/iter (+/- 0) | |
//! test format_string_cow ... bench: 78 ns/iter (+/- 1) | |
//! test to_cow ... bench: 2 ns/iter (+/- 0) | |
//! test to_owned_cow ... bench: 27 ns/iter (+/- 0) | |
//! test to_owned_string ... bench: 33 ns/iter (+/- 0) | |
//! | |
//! test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured | |
#![feature(test)] | |
extern crate test; | |
use test::Bencher; | |
use std::borrow::{Cow, ToOwned}; | |
#[bench] | |
fn empty(b: &mut Bencher) { | |
b.iter(|| 1) | |
} | |
#[bench] | |
fn to_owned_string(b: &mut Bencher) { | |
b.iter(|| "Benchmark".to_owned()); | |
} | |
#[bench] | |
fn to_cow(b: &mut Bencher) { | |
let s: &'static str = "Benchmark"; | |
b.iter(|| Cow::Borrowed(s)); | |
} | |
#[bench] | |
fn to_owned_cow(b: &mut Bencher) { | |
let s : String = "Benchmark".to_owned(); | |
b.iter(|| { let c : Cow<'static, str> = Cow::Owned(s.clone()); c }); | |
} | |
#[bench] | |
fn format_string(b: &mut Bencher) { | |
let s : String = "Benchmark".to_owned(); | |
b.iter(|| format!("{}", &s)); | |
} | |
#[bench] | |
fn format_str(b: &mut Bencher) { | |
let s : &'static str = "Benchmark"; | |
b.iter(|| format!("{}", s)); | |
} | |
#[bench] | |
fn format_string_cow(b: &mut Bencher) { | |
let c : Cow<'static, str> = Cow::Owned("Benchmark".to_owned()); | |
b.iter(|| format!("{}", &c)); | |
} | |
#[bench] | |
fn format_str_cow(b: &mut Bencher) { | |
let s : Cow<'static, str> = Cow::Borrowed("Benchmark"); | |
b.iter(|| format!("{}", &s)); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment