Add bench_header for benchmarking header implementations.

This commit is contained in:
Jonathan Reem
2014-11-10 16:32:09 -08:00
parent 0500b5f17f
commit 18f5e89432

View File

@@ -25,8 +25,47 @@ use std::fmt::{mod, Show};
use std::from_str::FromStr;
use std::str::from_utf8;
macro_rules! bench_header(
($name:ident, $ty:ty, $value:expr) => {
#[cfg(test)]
mod $name {
use test::Bencher;
use std::fmt::{mod, Show};
use super::*;
use header::{Header, HeaderFormat};
struct HeaderFormatter($ty);
impl Show for HeaderFormatter {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
self.0.fmt_header(f)
}
}
#[bench]
fn bench_parse(b: &mut Bencher) {
let val = $value;
b.iter(|| {
let _: $ty= Header::parse_header(val[]).unwrap();
});
}
#[bench]
fn bench_format(b: &mut Bencher) {
let val = HeaderFormatter(Header::parse_header($value[]).unwrap());
b.iter(|| {
format!("{}", val);
});
}
}
}
)
/// Exposes the Accept header.
pub mod accept;
/// Exposes the Authorization header.
pub mod authorization;