zerompk 0.7.1

A zero-copy, zero-dependency, no_std-compatible, extremely fast MessagePack serializer for Rust.
Documentation
#![feature(test)]
extern crate test;

mod common;

use common::Point;
use std::io::Write;

#[bench]
fn serialize_rmp_serde_file(b: &mut test::Bencher) {
    let points: Vec<Point> = (0..1000).map(|i| Point { x: i, y: i * 2 }).collect();
    let tmp_file = std::env::temp_dir().join("points.msgpack");
    let mut file = std::fs::File::create(&tmp_file).unwrap();
    let mut buf_writer = std::io::BufWriter::with_capacity(4096, &mut file);

    b.iter(|| {
        rmp_serde::encode::write(&mut buf_writer, &points).unwrap();
    });

    buf_writer.flush().unwrap();
}

#[bench]
#[cfg(feature = "std")]
fn serialize_zerompk_file(b: &mut test::Bencher) {
    let points: Vec<Point> = (0..1000).map(|i| Point { x: i, y: i * 2 }).collect();
    let tmp_file = std::env::temp_dir().join("points_zerompk.msgpack");
    let mut file = std::fs::File::create(&tmp_file).unwrap();
    let mut buf_writer = std::io::BufWriter::with_capacity(4096, &mut file);

    b.iter(|| {
        zerompk::write_msgpack(&mut buf_writer, &points).unwrap();
    });

    buf_writer.flush().unwrap();
}

#[bench]
fn serialize_serde_json_file(b: &mut test::Bencher) {
    let points: Vec<Point> = (0..1000).map(|i| Point { x: i, y: i * 2 }).collect();
    let tmp_file = std::env::temp_dir().join("points.json");
    let mut file = std::fs::File::create(&tmp_file).unwrap();
    let mut buf_writer = std::io::BufWriter::with_capacity(4096, &mut file);

    b.iter(|| {
        serde_json::to_writer(&mut buf_writer, &points).unwrap();
    });

    buf_writer.flush().unwrap();
}