From 3beaf1ebce50407ae526bb38844e87657cc4c04f Mon Sep 17 00:00:00 2001 From: unadlib Date: Wed, 18 Sep 2024 22:00:05 +0800 Subject: [PATCH] docs(readme): update benchmark result --- README.md | 22 +++++++++--------- benchmark.jpg | Bin 45901 -> 46548 bytes website/blog/releases/1.0/index.md | 22 +++++++++--------- .../extra-topics/comparison-with-immer.md | 22 +++++++++--------- website/docs/getting-started/performance.md | 22 +++++++++--------- 5 files changed, 44 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index ae4cae0..72de3f7 100644 --- a/README.md +++ b/README.md @@ -110,23 +110,23 @@ Mutative is up to 6x faster than naive handcrafted reducer for updating immutabl > Mutative passed all of Immer's test cases. -Measure(ops/sec) to update 50K arrays and 1K objects, bigger is better([view source](https://github.com/unadlib/mutative/blob/main/test/performance/benchmark.ts)). [Mutative v1.0.9 vs Immer v10.1.1] +Measure(ops/sec) to update 50K arrays and 1K objects, bigger is better([view source](https://github.com/unadlib/mutative/blob/main/test/performance/benchmark.ts)). [Mutative v1.0.10 vs Immer v10.1.1] ![Benchmark](benchmark.jpg) ``` -Naive handcrafted reducer - No Freeze x 4,447 ops/sec ±0.85% (96 runs sampled) -Mutative - No Freeze x 6,246 ops/sec ±1.29% (92 runs sampled) -Immer - No Freeze x 5.26 ops/sec ±0.56% (18 runs sampled) +Naive handcrafted reducer - No Freeze x 4,439 ops/sec ±0.65% (98 runs sampled) +Mutative - No Freeze x 6,300 ops/sec ±1.19% (94 runs sampled) +Immer - No Freeze x 5.26 ops/sec ±0.59% (18 runs sampled) -Mutative - Freeze x 950 ops/sec ±0.95% (96 runs sampled) -Immer - Freeze x 377 ops/sec ±0.37% (93 runs sampled) +Mutative - Freeze x 937 ops/sec ±1.25% (95 runs sampled) +Immer - Freeze x 378 ops/sec ±0.66% (93 runs sampled) -Mutative - Patches and No Freeze x 978 ops/sec ±0.16% (97 runs sampled) -Immer - Patches and No Freeze x 5.23 ops/sec ±0.25% (18 runs sampled) +Mutative - Patches and No Freeze x 975 ops/sec ±0.17% (99 runs sampled) +Immer - Patches and No Freeze x 5.29 ops/sec ±0.30% (18 runs sampled) -Mutative - Patches and Freeze x 504 ops/sec ±1.01% (94 runs sampled) -Immer - Patches and Freeze x 272 ops/sec ±0.83% (89 runs sampled) +Mutative - Patches and Freeze x 512 ops/sec ±0.85% (98 runs sampled) +Immer - Patches and Freeze x 278 ops/sec ±0.57% (90 runs sampled) The fastest method is Mutative - No Freeze ``` @@ -137,7 +137,7 @@ Run `yarn benchmark` to measure performance. Immer relies on auto-freeze to be enabled, if auto-freeze is disabled, Immer will have a huge performance drop and Mutative will have a huge performance lead, especially with large data structures it will have a performance lead of more than 50x. -So if you are using Immer, you will have to enable auto-freeze for performance. Mutative is disabled auto-freeze by default. With the default configuration of both, we can see the 16x performance gap between Mutative (`6,246 ops/sec`) and Immer (`377 ops/sec`). +So if you are using Immer, you will have to enable auto-freeze for performance. Mutative is disabled auto-freeze by default. With the default configuration of both, we can see the 16x performance gap between Mutative (`6,300 ops/sec`) and Immer (`378 ops/sec`). Overall, Mutative has a huge performance lead over Immer in [more performance testing scenarios](https://github.com/unadlib/mutative/tree/main/test/performance). Run `yarn performance` to get all the performance results locally. diff --git a/benchmark.jpg b/benchmark.jpg index d61a37b577e82d38785998786daa469be1afce9f..9bcb4b873bbaa0608f424057335cd646b419c6bb 100644 GIT binary patch literal 46548 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 lgb|}<4?&?7v diff --git a/website/blog/releases/1.0/index.md b/website/blog/releases/1.0/index.md index 6fc0bf8..032249d 100644 --- a/website/blog/releases/1.0/index.md +++ b/website/blog/releases/1.0/index.md @@ -81,23 +81,23 @@ const state = create(baseState, (draft) => { > Mutative passed all of Immer's test cases. -Measure(ops/sec) to update 50K arrays and 1K objects, bigger is better([view source](https://github.com/unadlib/mutative/blob/main/test/performance/benchmark.ts)). [Mutative v1.0.9 vs Immer v10.1.1] +Measure(ops/sec) to update 50K arrays and 1K objects, bigger is better([view source](https://github.com/unadlib/mutative/blob/main/test/performance/benchmark.ts)). [Mutative v1.0.10 vs Immer v10.1.1] ![Benchmark](img/benchmark.jpg) ``` -Naive handcrafted reducer - No Freeze x 4,447 ops/sec ±0.85% (96 runs sampled) -Mutative - No Freeze x 6,246 ops/sec ±1.29% (92 runs sampled) -Immer - No Freeze x 5.26 ops/sec ±0.56% (18 runs sampled) +Naive handcrafted reducer - No Freeze x 4,439 ops/sec ±0.65% (98 runs sampled) +Mutative - No Freeze x 6,300 ops/sec ±1.19% (94 runs sampled) +Immer - No Freeze x 5.26 ops/sec ±0.59% (18 runs sampled) -Mutative - Freeze x 950 ops/sec ±0.95% (96 runs sampled) -Immer - Freeze x 377 ops/sec ±0.37% (93 runs sampled) +Mutative - Freeze x 937 ops/sec ±1.25% (95 runs sampled) +Immer - Freeze x 378 ops/sec ±0.66% (93 runs sampled) -Mutative - Patches and No Freeze x 978 ops/sec ±0.16% (97 runs sampled) -Immer - Patches and No Freeze x 5.23 ops/sec ±0.25% (18 runs sampled) +Mutative - Patches and No Freeze x 975 ops/sec ±0.17% (99 runs sampled) +Immer - Patches and No Freeze x 5.29 ops/sec ±0.30% (18 runs sampled) -Mutative - Patches and Freeze x 504 ops/sec ±1.01% (94 runs sampled) -Immer - Patches and Freeze x 272 ops/sec ±0.83% (89 runs sampled) +Mutative - Patches and Freeze x 512 ops/sec ±0.85% (98 runs sampled) +Immer - Patches and Freeze x 278 ops/sec ±0.57% (90 runs sampled) The fastest method is Mutative - No Freeze ``` @@ -108,7 +108,7 @@ Run `yarn benchmark` to measure performance. Immer relies on auto-freeze to be enabled, if auto-freeze is disabled, Immer will have a huge performance drop and Mutative will have a huge performance lead, especially with large data structures it will have a performance lead of more than 50x. -So if you are using Immer, you will have to enable auto-freeze for performance. Mutative is disabled auto-freeze by default. With the default configuration of both, we can see the 16x performance gap between Mutative (`6,246 ops/sec`) and Immer (`377 ops/sec`). +So if you are using Immer, you will have to enable auto-freeze for performance. Mutative is disabled auto-freeze by default. With the default configuration of both, we can see the 16x performance gap between Mutative (`6,300 ops/sec`) and Immer (`378 ops/sec`). Overall, Mutative has a huge performance lead over Immer in [more performance testing scenarios](https://github.com/unadlib/mutative/tree/main/test/performance). diff --git a/website/docs/extra-topics/comparison-with-immer.md b/website/docs/extra-topics/comparison-with-immer.md index 98b9045..a17041d 100644 --- a/website/docs/extra-topics/comparison-with-immer.md +++ b/website/docs/extra-topics/comparison-with-immer.md @@ -25,23 +25,23 @@ Mutative has fewer bugs such as accidental draft escapes than Immer, [view detai > Mutative passed all of Immer's test cases. -Measure(ops/sec) to update 50K arrays and 1K objects, bigger is better([view source](https://github.com/unadlib/mutative/blob/main/test/performance/benchmark.ts)). [Mutative v1.0.9 vs Immer v10.1.1] +Measure(ops/sec) to update 50K arrays and 1K objects, bigger is better([view source](https://github.com/unadlib/mutative/blob/main/test/performance/benchmark.ts)). [Mutative v1.0.10 vs Immer v10.1.1] ![Benchmark](img/benchmark.jpg) ``` -Naive handcrafted reducer - No Freeze x 4,447 ops/sec ±0.85% (96 runs sampled) -Mutative - No Freeze x 6,246 ops/sec ±1.29% (92 runs sampled) -Immer - No Freeze x 5.26 ops/sec ±0.56% (18 runs sampled) +Naive handcrafted reducer - No Freeze x 4,439 ops/sec ±0.65% (98 runs sampled) +Mutative - No Freeze x 6,300 ops/sec ±1.19% (94 runs sampled) +Immer - No Freeze x 5.26 ops/sec ±0.59% (18 runs sampled) -Mutative - Freeze x 950 ops/sec ±0.95% (96 runs sampled) -Immer - Freeze x 377 ops/sec ±0.37% (93 runs sampled) +Mutative - Freeze x 937 ops/sec ±1.25% (95 runs sampled) +Immer - Freeze x 378 ops/sec ±0.66% (93 runs sampled) -Mutative - Patches and No Freeze x 978 ops/sec ±0.16% (97 runs sampled) -Immer - Patches and No Freeze x 5.23 ops/sec ±0.25% (18 runs sampled) +Mutative - Patches and No Freeze x 975 ops/sec ±0.17% (99 runs sampled) +Immer - Patches and No Freeze x 5.29 ops/sec ±0.30% (18 runs sampled) -Mutative - Patches and Freeze x 504 ops/sec ±1.01% (94 runs sampled) -Immer - Patches and Freeze x 272 ops/sec ±0.83% (89 runs sampled) +Mutative - Patches and Freeze x 512 ops/sec ±0.85% (98 runs sampled) +Immer - Patches and Freeze x 278 ops/sec ±0.57% (90 runs sampled) The fastest method is Mutative - No Freeze ``` @@ -52,7 +52,7 @@ Run `yarn benchmark` to measure performance. Immer relies on auto-freeze to be enabled, if auto-freeze is disabled, Immer will have a huge performance drop and Mutative will have a huge performance lead, especially with large data structures it will have a performance lead of more than 50x. -So if you are using Immer, you will have to enable auto-freeze for performance. Mutative is disabled auto-freeze by default. With the default configuration of both, we can see the 16x performance gap between Mutative (`6,246 ops/sec`) and Immer (`377 ops/sec`). +So if you are using Immer, you will have to enable auto-freeze for performance. Mutative is disabled auto-freeze by default. With the default configuration of both, we can see the 16x performance gap between Mutative (`6,300 ops/sec`) and Immer (`378 ops/sec`). Overall, Mutative has a huge performance lead over Immer in [more performance testing scenarios](https://github.com/unadlib/mutative/tree/main/test/performance). Run `yarn performance` to get all the performance results locally. diff --git a/website/docs/getting-started/performance.md b/website/docs/getting-started/performance.md index 6ca9f95..434a288 100644 --- a/website/docs/getting-started/performance.md +++ b/website/docs/getting-started/performance.md @@ -69,23 +69,23 @@ const state = create(baseState, (draft) => { > Mutative passed all of Immer's test cases. -Measure(ops/sec) to update 50K arrays and 1K objects, bigger is better([view source](https://github.com/unadlib/mutative/blob/main/test/performance/benchmark.ts)). [Mutative v1.0.9 vs Immer v10.1.1] +Measure(ops/sec) to update 50K arrays and 1K objects, bigger is better([view source](https://github.com/unadlib/mutative/blob/main/test/performance/benchmark.ts)). [Mutative v1.0.10 vs Immer v10.1.1] ![Benchmark](img/benchmark.jpg) ``` -Naive handcrafted reducer - No Freeze x 4,447 ops/sec ±0.85% (96 runs sampled) -Mutative - No Freeze x 6,246 ops/sec ±1.29% (92 runs sampled) -Immer - No Freeze x 5.26 ops/sec ±0.56% (18 runs sampled) +Naive handcrafted reducer - No Freeze x 4,439 ops/sec ±0.65% (98 runs sampled) +Mutative - No Freeze x 6,300 ops/sec ±1.19% (94 runs sampled) +Immer - No Freeze x 5.26 ops/sec ±0.59% (18 runs sampled) -Mutative - Freeze x 950 ops/sec ±0.95% (96 runs sampled) -Immer - Freeze x 377 ops/sec ±0.37% (93 runs sampled) +Mutative - Freeze x 937 ops/sec ±1.25% (95 runs sampled) +Immer - Freeze x 378 ops/sec ±0.66% (93 runs sampled) -Mutative - Patches and No Freeze x 978 ops/sec ±0.16% (97 runs sampled) -Immer - Patches and No Freeze x 5.23 ops/sec ±0.25% (18 runs sampled) +Mutative - Patches and No Freeze x 975 ops/sec ±0.17% (99 runs sampled) +Immer - Patches and No Freeze x 5.29 ops/sec ±0.30% (18 runs sampled) -Mutative - Patches and Freeze x 504 ops/sec ±1.01% (94 runs sampled) -Immer - Patches and Freeze x 272 ops/sec ±0.83% (89 runs sampled) +Mutative - Patches and Freeze x 512 ops/sec ±0.85% (98 runs sampled) +Immer - Patches and Freeze x 278 ops/sec ±0.57% (90 runs sampled) The fastest method is Mutative - No Freeze ``` @@ -96,7 +96,7 @@ Run `yarn benchmark` to measure performance. Immer relies on auto-freeze to be enabled, if auto-freeze is disabled, Immer will have a huge performance drop and Mutative will have a huge performance lead, especially with large data structures it will have a performance lead of more than 50x. -So if you are using Immer, you will have to enable auto-freeze for performance. Mutative is disabled auto-freeze by default. With the default configuration of both, we can see the 16x performance gap between Mutative (`6,246 ops/sec`) and Immer (`377 ops/sec`). +So if you are using Immer, you will have to enable auto-freeze for performance. Mutative is disabled auto-freeze by default. With the default configuration of both, we can see the 16x performance gap between Mutative (`6,300 ops/sec`) and Immer (`378 ops/sec`). Overall, Mutative has a huge performance lead over Immer in [more performance testing scenarios](https://github.com/unadlib/mutative/tree/main/test/performance). Run `yarn performance` to get all the performance results locally.