Skip to content

Instantly share code, notes, and snippets.

@sethdusek
Last active July 14, 2017 11:53
Show Gist options
  • Save sethdusek/1f0133b6cea5884db3c7554797a7ace3 to your computer and use it in GitHub Desktop.
Save sethdusek/1f0133b6cea5884db3c7554797a7ace3 to your computer and use it in GitHub Desktop.
#![feature(test)]
extern crate test;
extern crate zerocopy;
use zerocopy::zc::ZeroCopy;
use test::Bencher;
use std::io::prelude::*;
use std::fs::File;
#[bench]
fn zerocopy(b: &mut Bencher) {
let mut src = File::open("/tmp/foo").unwrap();
let mut dest = File::create("/tmp/foo.txt").unwrap();
b.iter(|| {
unsafe { src.copy_to_fd(&mut dest).unwrap() };
});
std::fs::remove_file("/tmp/foo.txt");
}
#[bench]
fn default(b: &mut Bencher) {
let mut src = File::open("/tmp/foo").unwrap();
let mut dest = File::create("/tmp/foo.txt").unwrap();
let len = src.metadata().unwrap().len() as usize;
b.iter(|| {
::std::io::copy(&mut src, &mut dest).unwrap();
src.seek(::std::io::SeekFrom::Start(0));
});
std::fs::remove_file("/tmp/foo.txt");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment