Last active
July 5, 2018 12:59
-
-
Save gnzlbg/09d7e546df2215bee83fc5fe02840292 to your computer and use it in GitHub Desktop.
indicatif+crossbeam
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#![feature(test)] | |
extern crate test; | |
use test::black_box; | |
extern crate jemallocator; | |
use jemallocator::Jemalloc; | |
extern crate indicatif; | |
use indicatif::{ProgressBar, MultiProgress, ProgressStyle}; | |
extern crate crossbeam; | |
#[global_allocator] | |
static ALLOC: Jemalloc = Jemalloc; | |
fn main() { | |
let start_bytes: u64 = 1; | |
let end_bytes: u64 = 10_000_000_000; | |
let m = MultiProgress::new(); | |
crossbeam::scope(|scope| { | |
scope.spawn(|| run_test("vec_zero_init", vector_zero_initialized, &m, start_bytes, end_bytes) ); | |
scope.spawn(|| run_test("vec_ones_init", vector_ones_initialized, &m, start_bytes, end_bytes) ); | |
}); | |
m.join_and_clear().unwrap(); | |
} | |
fn run_test<F>(name: &'static str, f: F, m: &MultiProgress, mut start: u64, end: u64) | |
where F: Fn(u64) -> () + Send + 'static | |
{ | |
let pb = m.add(ProgressBar::new(end)); | |
pb.set_style(ProgressStyle::default_bar() | |
.template("{msg:15}: [{elapsed_precise}] [{bar:40.cyan/blue}] {bytes}/{total_bytes} ({eta})") | |
.progress_chars("#>-")); | |
pb.set_position(0); | |
loop { | |
pb.set_message(&format!("{}", name)); | |
pb.set_position(start); | |
if start > end { | |
break; | |
} | |
f(start); | |
start *= 2; | |
} | |
pb.finish(); | |
} | |
#[inline(never)] | |
fn vector_zero_initialized(bytes: u64) { | |
let v = vec![0_u8; bytes as usize]; | |
black_box(v); | |
} | |
#[inline(never)] | |
fn vector_ones_initialized(bytes: u64) { | |
let v = vec![1_u8; bytes as usize]; | |
black_box(v); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#![feature(test)] | |
extern crate test; | |
use test::black_box; | |
extern crate jemallocator; | |
use jemallocator::Jemalloc; | |
extern crate indicatif; | |
use indicatif::{ProgressBar, MultiProgress, ProgressStyle}; | |
extern crate crossbeam; | |
#[global_allocator] | |
static ALLOC: Jemalloc = Jemalloc; | |
fn main() { | |
let start_bytes: u64 = 1; | |
// let end_bytes: u64 = 10_000_000_000; | |
let end_bytes: u64 = 10_000_000_000; | |
let m = MultiProgress::new(); | |
crossbeam::scope(|s| { | |
s.spawn(|| run_test("vec_zero_init", vector_zero_initialized, &m, start_bytes, end_bytes)); | |
s.spawn(|| run_test("vec_ones_init", vector_ones_initialized, &m, start_bytes, end_bytes)); | |
}); | |
m.join_and_clear().unwrap(); | |
} | |
fn run_test<F>(name: &'static str, f: F, m: &MultiProgress, mut start: u64, end: u64) | |
where F: Fn(u64) -> () + Send + 'static | |
{ | |
let pb = m.add(ProgressBar::new(end)); | |
pb.set_style(ProgressStyle::default_bar() | |
.template("{msg}: [{elapsed_precise}] [{bar:40.cyan/blue}] {bytes}/{total_bytes} ({eta})") | |
.progress_chars("#>-")); | |
pb.set_position(0); | |
let _ = std::thread::spawn(move || { | |
loop { | |
pb.set_message(&format!("{}", name)); | |
pb.set_position(start); | |
if start > end { | |
break; | |
} | |
f(start); | |
start *= 2; | |
} | |
pb.finish(); | |
}); | |
} | |
#[inline(never)] | |
fn vector_zero_initialized(bytes: u64) { | |
let v = vec![0_u8; bytes as usize]; | |
black_box(v); | |
} | |
#[inline(never)] | |
fn vector_ones_initialized(bytes: u64) { | |
let v = vec![1_u8; bytes as usize]; | |
black_box(v); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment