Skip to content

Instantly share code, notes, and snippets.

@ryochack
Last active April 16, 2018 16:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ryochack/7772dc38bde3a2a62cbe91820fc1f887 to your computer and use it in GitHub Desktop.
Save ryochack/7772dc38bde3a2a62cbe91820fc1f887 to your computer and use it in GitHub Desktop.
#![feature(test)]
extern crate test;
#[cfg(test)]
mod tests {
use super::*;
use std::str;
use test::Bencher;
#[bench]
fn bench_bytes_to_str(b: &mut Bencher) {
let contents = "sample message";
b.iter(|| contents.starts_with(str::from_utf8(&[b's', b'a', b'm']).unwrap()));
}
#[bench]
fn bench_str_to_bytes(b: &mut Bencher) {
let contents = "sample message";
b.iter(|| contents.as_bytes().starts_with(&[b's', b'a', b'm']));
}
}
@ryochack
Copy link
Author

rustc 1.27.0-nightly (bd40cbbe1 2018-04-14)

running 2 tests
test tests::bench_bytes_to_str ... bench:          14 ns/iter (+/- 7)
test tests::bench_str_to_bytes ... bench:           1 ns/iter (+/- 0)

test result: ok. 0 passed; 0 failed; 0 ignored; 2 measured; 0 filtered out

strをbytesに変換する方が14倍速い。(as_bytes()内部でやってるのはunsafeでのキャストのみなのでコストが小さい)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment