diff --git a/Cargo.toml b/Cargo.toml index ac6c615..c0048e2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,6 +12,9 @@ napi = {version = "1", features = ["napi5"]} napi-derive = "1" snap = "1" +[target.'cfg(all(target_arch = "x86_64", not(target_env = "musl")))'.dependencies] +mimalloc = {version = "0.1"} + [build-dependencies] napi-build = "1" diff --git a/README.md b/README.md index 269071a..51c2616 100644 --- a/README.md +++ b/README.md @@ -44,16 +44,12 @@ export function uncompress(compressed: Buffer): Promise ### Hardware ``` -Model Name: MacBook Pro -Model Identifier: MacBookPro15,1 -Processor Name: Intel Core i7 -Processor Speed: 2.6 GHz -Number of Processors: 1 -Total Number of Cores: 6 -L2 Cache (per Core): 256 KB -L3 Cache: 12 MB -Hyper-Threading Technology: Enabled -Memory: 16 GB +OS: Windows 10 x86_64 +Host: Micro-Star International Co., Ltd. MS-7C35 +Kernel: 10.0.19043 +Terminal: Windows Terminal +CPU: AMD Ryzen 9 5950X (32) @ 3.400GHz +Memory: 15959MiB / 32688MiB ``` ### Result @@ -63,10 +59,10 @@ Running "Compress data" suite... Progress: 100% @napi-rs/snappy: - 279 ops/s, ±7.86% | fastest + 333 ops/s, ±2.10% | fastest snappy node: - 235 ops/s, ±1.85% | slowest, 15.77% slower + 163 ops/s, ±1.44% | slowest, 51.05% slower Finished 2 cases! Fastest: @napi-rs/snappy @@ -75,10 +71,10 @@ Running "Uncompress data" suite... Progress: 100% @napi-rs/snappy: - 379 ops/s, ±2.09% | fastest + 980 ops/s, ±1.85% | fastest snappy node: - 347 ops/s, ±1.93% | slowest, 8.44% slower + 256 ops/s, ±0.61% | slowest, 73.88% slower Finished 2 cases! Fastest: @napi-rs/snappy diff --git a/src/lib.rs b/src/lib.rs index 3c906a7..60b6686 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,6 +6,14 @@ extern crate napi_derive; use napi::{CallContext, Env, Error, JsBuffer, JsBufferValue, JsObject, Ref, Result, Status, Task}; use snap::raw::{Decoder, Encoder}; +#[cfg(all( + target_arch = "x86_64", + not(target_env = "musl"), + not(debug_assertions) +))] +#[global_allocator] +static ALLOC: mimalloc::MiMalloc = mimalloc::MiMalloc; + #[module_exports] fn init(mut exports: JsObject) -> Result<()> { exports.create_named_method("compressSync", compress_sync)?;