Skip to content

Instantly share code, notes, and snippets.

@maghoff
Created June 1, 2017 22:13
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 maghoff/b02c401feeaf151aa53faf565839ce9d to your computer and use it in GitHub Desktop.
Save maghoff/b02c401feeaf151aa53faf565839ce9d to your computer and use it in GitHub Desktop.
extern crate numtoa;
/*
real 0m1.080s
user 0m0.684s
sys 0m0.392s
*/
fn one() {
let mut i: i32 = 0;
while i < 10000000 {
println!(
"{}\n{}\nFizz\n{}\nBuzz\nFizz\n{}\n{}\nFizz\nBuzz\n{}\nFizz\n{}\n{}\nFizzBuzz\n",
i+1, i+2, /*Fizz*/ i+4, /*Buzz*/
/*Fizz*/ i+7, i+8, /*Fizz Buzz*/
i+11, /*Fizz*/ i+13, i+14 /*FizzBuzz*/
);
i += 15;
}
}
/*
real 0m0.205s
user 0m0.196s
sys 0m0.008s
*/
fn two() {
use std::io::{BufWriter,Write};
let stdout = std::io::stdout();
let out = stdout.lock();
let mut out = BufWriter::new(out); //< Biggest gain
let mut i: i32 = 0;
while i < 10000000 {
let _ = write!(
&mut out,
"{}\n{}\nFizz\n{}\nBuzz\nFizz\n{}\n{}\nFizz\nBuzz\n{}\nFizz\n{}\n{}\nFizzBuzz\n",
i+1, i+2, /*Fizz*/ i+4, /*Buzz*/
/*Fizz*/ i+7, i+8, /*Fizz Buzz*/
i+11, /*Fizz*/ i+13, i+14 /*FizzBuzz*/
);
i += 15;
}
}
macro_rules! num {
($out:ident, $buf:ident, $num:expr) => {
let start = $num.numtoa(10, &mut $buf);
let _ = $out.write(&$buf[start..]);
let _ = $out.write(b"\n");
}
}
/*
real 0m0.190s
user 0m0.188s
sys 0m0.000s
*/
fn three() {
use std::io::{BufWriter, Write};
use numtoa::NumToA;
let stdout = std::io::stdout();
let out = stdout.lock();
let mut out = BufWriter::new(out);
let mut buffer = [0u8; 20];
let mut i: i32 = 0;
while i < 10000000 {
num!(out, buffer, i+1);
num!(out, buffer, i+2);
let _ = out.write(b"fizz\n");
num!(out, buffer, i+4);
let _ = out.write(b"buzz\n");
let _ = out.write(b"fizz\n");
num!(out, buffer, i+7);
num!(out, buffer, i+8);
let _ = out.write(b"fizz\n");
let _ = out.write(b"buzz\n");
num!(out, buffer, i+11);
let _ = out.write(b"fizz\n");
num!(out, buffer, i+13);
num!(out, buffer, i+14);
let _ = out.write(b"fizzbuzz\n");
i += 15;
}
}
fn main() {
three()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment