| // cargo bench |
| |
| #![feature(test)] |
| |
| extern crate test; |
| |
| use std::io::Write; |
| use std::{f32, f64}; |
| use test::{black_box, Bencher}; |
| |
| macro_rules! benches { |
| ($($name:ident($value:expr),)*) => { |
| mod bench_ryu { |
| use super::*; |
| $( |
| #[bench] |
| fn $name(b: &mut Bencher) { |
| let mut buf = ryu::Buffer::new(); |
| |
| b.iter(move || { |
| let value = black_box($value); |
| let formatted = buf.format_finite(value); |
| black_box(formatted); |
| }); |
| } |
| )* |
| } |
| |
| mod bench_std_fmt { |
| use super::*; |
| $( |
| #[bench] |
| fn $name(b: &mut Bencher) { |
| let mut buf = Vec::with_capacity(20); |
| |
| b.iter(|| { |
| buf.clear(); |
| let value = black_box($value); |
| write!(&mut buf, "{}", value).unwrap(); |
| black_box(buf.as_slice()); |
| }); |
| } |
| )* |
| } |
| }; |
| } |
| |
| benches! { |
| bench_0_f64(0f64), |
| bench_short_f64(0.1234f64), |
| bench_e_f64(2.718281828459045f64), |
| bench_max_f64(f64::MAX), |
| bench_0_f32(0f32), |
| bench_short_f32(0.1234f32), |
| bench_e_f32(2.718281828459045f32), |
| bench_max_f32(f32::MAX), |
| } |