Docs: update perf test results

This commit is contained in:
Lovell Fuller 2025-03-15 23:39:11 +00:00
parent f3a4f060c6
commit 0d04e9dba3

View File

@ -11,26 +11,24 @@ The I/O limits of the relevant (de)compression library will generally determine
## Contenders ## Contenders
* [jimp](https://www.npmjs.com/package/jimp) v0.22.10 - Image processing in pure JavaScript. * [jimp](https://www.npmjs.com/package/jimp) v1.6.0 - Image processing in pure JavaScript.
* [imagemagick](https://www.npmjs.com/package/imagemagick) v0.1.3 - Supports filesystem only and "*has been unmaintained for a long time*". * [imagemagick](https://www.npmjs.com/package/imagemagick) v0.1.3 - Supports filesystem only and "*has been unmaintained for a long time*".
* [gm](https://www.npmjs.com/package/gm) v1.25.0 - Fully featured wrapper around GraphicsMagick's `gm` command line utility. * [gm](https://www.npmjs.com/package/gm) v1.25.1 - Fully featured wrapper around GraphicsMagick's `gm` command line utility, but "*has been sunset*".
* [@squoosh/lib](https://www.npmjs.com/package/@squoosh/lib) v0.5.3 - Image libraries transpiled to WebAssembly, includes GPLv3 code, but "*Project no longer maintained*". * sharp v0.34.0 / libvips v8.16.1 - Caching within libvips disabled to ensure a fair comparison.
* [@squoosh/cli](https://www.npmjs.com/package/@squoosh/cli) v0.7.3 - Command line wrapper around `@squoosh/lib`, avoids GPLv3 by spawning process, but "*Project no longer maintained*".
* sharp v0.33.0 / libvips v8.15.0 - Caching within libvips disabled to ensure a fair comparison.
## Environment ## Environment
### AMD64 ### AMD64
* AWS EC2 us-east-2 [c7a.xlarge](https://aws.amazon.com/ec2/instance-types/c7a/) (4x AMD EPYC 9R14) * AWS EC2 us-west-2 [c7a.xlarge](https://aws.amazon.com/ec2/instance-types/c7a/) (4x AMD EPYC 9R14)
* Ubuntu 23.10 [13f233a16be2](https://hub.docker.com/layers/library/ubuntu/23.10/images/sha256-13f233a16be210b57907b98b0d927ceff7571df390701e14fe1f3901b2c4a4d7) * Ubuntu 24.10 [fad5ba7223f8](https://hub.docker.com/layers/library/ubuntu/24.10/images/sha256-fad5ba7223f8d87179dfa23211d31845d47e07a474ac31ad5258afb606523c0d)
* Node.js 20.10.0 * Node.js 22.14.0
### ARM64 ### ARM64
* AWS EC2 us-east-2 [c7g.xlarge](https://aws.amazon.com/ec2/instance-types/c7g/) (4x ARM Graviton3) * AWS EC2 us-west-2 [c8g.xlarge](https://aws.amazon.com/ec2/instance-types/c8g/) (4x ARM Graviton4)
* Ubuntu 23.10 [7708743264cb](https://hub.docker.com/layers/library/ubuntu/23.10/images/sha256-7708743264cbb7f6cf7fc13e915faece45a6cdda455748bc55e58e8de3d27b63) * Ubuntu 24.10 [133f2e05cb69](https://hub.docker.com/layers/library/ubuntu/24.10/images/sha256-133f2e05cb6958c3ce7ec870fd5a864558ba780fb7062315b51a23670bff7e76)
* Node.js 20.10.0 * Node.js 22.14.0
## Task: JPEG ## Task: JPEG
@ -44,29 +42,25 @@ Note: jimp does not support Lanczos 3, bicubic resampling used instead.
| Module | Input | Output | Ops/sec | Speed-up | | Module | Input | Output | Ops/sec | Speed-up |
| :----------------- | :----- | :----- | ------: | -------: | | :----------------- | :----- | :----- | ------: | -------: |
| jimp | buffer | buffer | 0.84 | 1.0 | | jimp | buffer | buffer | 2.35 | 1.0 |
| squoosh-cli | file | file | 1.54 | 1.8 | | imagemagick | file | file | 10.51 | 4.5 |
| squoosh-lib | buffer | buffer | 2.24 | 2.7 | | gm | buffer | buffer | 11.67 | 5.0 |
| imagemagick | file | file | 11.75 | 14.0 | | gm | file | file | 11.75 | 5.1 |
| gm | buffer | buffer | 12.66 | 15.1 | | sharp | stream | stream | 60.72 | 25.8 |
| gm | file | file | 12.72 | 15.1 | | sharp | file | file | 62.37 | 26.5 |
| sharp | stream | stream | 48.31 | 57.5 | | sharp | buffer | buffer | 65.15 | 27.7 |
| sharp | file | file | 51.42 | 61.2 |
| sharp | buffer | buffer | 52.41 | 62.4 |
#### Results: JPEG (ARM64) #### Results: JPEG (ARM64)
| Module | Input | Output | Ops/sec | Speed-up | | Module | Input | Output | Ops/sec | Speed-up |
| :----------------- | :----- | :----- | ------: | -------: | | :----------------- | :----- | :----- | ------: | -------: |
| jimp | buffer | buffer | 0.88 | 1.0 | | jimp | buffer | buffer | 2.13 | 1.0 |
| squoosh-cli | file | file | 1.18 | 1.3 | | imagemagick | file | file | 12.95 | 6.1 |
| squoosh-lib | buffer | buffer | 1.99 | 2.3 | | gm | buffer | buffer | 13.53 | 6.4 |
| gm | buffer | buffer | 6.06 | 6.9 | | gm | file | file | 13.52 | 6.4 |
| gm | file | file | 10.81 | 12.3 | | sharp | stream | stream | 46.58 | 21.9 |
| imagemagick | file | file | 10.95 | 12.4 | | sharp | file | file | 48.42 | 22.7 |
| sharp | stream | stream | 33.15 | 37.7 | | sharp | buffer | buffer | 50.16 | 23.6 |
| sharp | file | file | 34.99 | 39.8 |
| sharp | buffer | buffer | 36.05 | 41.0 |
## Task: PNG ## Task: PNG
@ -82,25 +76,21 @@ Note: jimp does not support premultiply/unpremultiply.
| Module | Input | Output | Ops/sec | Speed-up | | Module | Input | Output | Ops/sec | Speed-up |
| :----------------- | :----- | :----- | ------: | -------: | | :----------------- | :----- | :----- | ------: | -------: |
| squoosh-cli | file | file | 0.34 | 1.0 | | gm | file | file | 8.66 | 1.0 |
| squoosh-lib | buffer | buffer | 0.51 | 1.5 | | imagemagick | file | file | 8.79 | 1.0 |
| jimp | buffer | buffer | 3.59 | 10.6 | | jimp | buffer | buffer | 11.26 | 1.3 |
| gm | file | file | 8.54 | 25.1 | | sharp | file | file | 27.93 | 3.2 |
| imagemagick | file | file | 9.23 | 27.1 | | sharp | buffer | buffer | 28.69 | 3.3 |
| sharp | file | file | 25.43 | 74.8 |
| sharp | buffer | buffer | 25.70 | 75.6 |
### Results: PNG (ARM64) ### Results: PNG (ARM64)
| Module | Input | Output | Ops/sec | Speed-up | | Module | Input | Output | Ops/sec | Speed-up |
| :----------------- | :----- | :----- | ------: | -------: | | :----------------- | :----- | :----- | ------: | -------: |
| squoosh-cli | file | file | 0.33 | 1.0 | | gm | file | file | 9.65 | 1.0 |
| squoosh-lib | buffer | buffer | 0.46 | 1.4 | | imagemagick | file | file | 9.72 | 1.0 |
| jimp | buffer | buffer | 3.51 | 10.6 | | jimp | buffer | buffer | 10.68 | 1.1 |
| gm | file | file | 7.47 | 22.6 | | sharp | file | file | 23.90 | 2.5 |
| imagemagick | file | file | 8.06 | 24.4 | | sharp | buffer | buffer | 24.48 | 2.5 |
| sharp | file | file | 17.31 | 52.5 |
| sharp | buffer | buffer | 17.66 | 53.5 |
## Running the benchmark test ## Running the benchmark test