node-workers 0.8.0

A pool of long-lived nodejs workers
Documentation
use benchman::*;
use node_workers::WorkerPool;
use std::process::Command;

fn main() {
  fn standard_command(worker_name: &str) {
    Command::new("node")
      .arg(&format!("benches/workers/{}", worker_name))
      .arg("30")
      .spawn()
      .unwrap()
      .wait()
      .unwrap();
  }

  let bm = BenchMan::new("timing");
  for worker_name in vec!["fast", "slow"] {
    let std_name = &format!("{}-inner", worker_name);

    {
      let _sw = bm.get_stopwatch(&format!("[{}] standard command - first run", worker_name));
      standard_command(std_name);
    }
    {
      let _sw = bm.get_stopwatch(&format!(
        "[{}] standard command - subsequent 3 runs",
        worker_name
      ));
      for _ in 0..3 {
        standard_command(std_name);
      }
    }

    let mut pool = WorkerPool::setup(&format!("benches/workers/{}", worker_name), 1);
    {
      let _sw = bm.get_stopwatch(&format!("[{}] worker pool - first run", worker_name));
      pool.perform::<(), _>("fib", vec![30u32]).unwrap();
    }
    {
      let _sw = bm.get_stopwatch(&format!(
        "[{}] worker pool - subsequent 3 runs",
        worker_name
      ));
      for _ in 0..3 {
        pool.perform::<(), _>("fib", vec![30u32]).unwrap();
      }
    }
  }
  println!("{}", bm);
}