mirror of
https://github.com/lovell/sharp.git
synced 2026-02-04 13:46:19 +01:00
Compare commits
6 Commits
v0.26.0-be
...
v0.26.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
866e9824d1 | ||
|
|
482e6078e2 | ||
|
|
bc7ab296ef | ||
|
|
a5f4f53b56 | ||
|
|
b1227f526d | ||
|
|
78b42c8306 |
@@ -4,7 +4,7 @@
|
||||
|
||||
Requires libvips v8.10.0
|
||||
|
||||
### v0.26.0 - TBD
|
||||
### v0.26.0 - 25th August 2020
|
||||
|
||||
* Prebuilt libvips binaries are now statically-linked and Brotli-compressed, requiring Node.js 10.16.0+.
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="https://pixel.plumbing/px/72x72/sharp-logo.svg">
|
||||
<link rel="apple-touch-icon-precomposed" href="https://pixel.plumbing/px/57x57/sharp-logo.svg">
|
||||
<link rel="author" href="/humans.txt" type="text/plain">
|
||||
<link rel="preload" href="https://cdn.jsdelivr.net/gh/lovell/sharp@v0.25.4/docs/README.md" as="fetch" type="text/markdown" crossorigin>
|
||||
<link rel="preload" href="https://cdn.jsdelivr.net/gh/lovell/sharp@v0.26.0/docs/README.md" as="fetch" type="text/markdown" crossorigin>
|
||||
<link rel="preload" href="https://cdn.jsdelivr.net/gh/lovell/sharp@master/docs/image/sharp-logo.svg" as="image" type="image/svg+xml" crossorigin>
|
||||
<link rel="dns-prefetch" href="https://pixel.plumbing">
|
||||
<link rel="dns-prefetch" href="https://www.google-analytics.com">
|
||||
@@ -139,7 +139,7 @@
|
||||
docuteApiTitlePlugin,
|
||||
docuteApiSearchPlugin
|
||||
],
|
||||
sourcePath: 'https://cdn.jsdelivr.net/gh/lovell/sharp@v0.25.4/docs',
|
||||
sourcePath: 'https://cdn.jsdelivr.net/gh/lovell/sharp@v0.26.0/docs',
|
||||
nav: [
|
||||
{
|
||||
title: 'Funding',
|
||||
|
||||
@@ -4,11 +4,11 @@ A test to benchmark the performance of this module relative to alternatives.
|
||||
|
||||
## The contenders
|
||||
|
||||
* [jimp](https://www.npmjs.com/package/jimp) v0.9.3 - Image processing in pure JavaScript. Provides bicubic interpolation.
|
||||
* [mapnik](https://www.npmjs.org/package/mapnik) v4.3.1 - Whilst primarily a map renderer, Mapnik contains bitmap image utilities.
|
||||
* [jimp](https://www.npmjs.com/package/jimp) v0.16.0 - Image processing in pure JavaScript. Provides bicubic interpolation.
|
||||
* [mapnik](https://www.npmjs.org/package/mapnik) v4.5.2 - Whilst primarily a map renderer, Mapnik contains bitmap image utilities.
|
||||
* [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.23.1 - Fully featured wrapper around GraphicsMagick's `gm` command line utility.
|
||||
* sharp v0.24.0 / libvips v8.9.0 - Caching within libvips disabled to ensure a fair comparison.
|
||||
* sharp v0.26.0 / libvips v8.10.0 - Caching within libvips disabled to ensure a fair comparison.
|
||||
|
||||
## The task
|
||||
|
||||
@@ -18,25 +18,25 @@ then compress to JPEG at a "quality" setting of 80.
|
||||
|
||||
## Test environment
|
||||
|
||||
* AWS EC2 eu-west-1 [c5.large](https://aws.amazon.com/ec2/instance-types/c5/) (2x Xeon Platinum 8124M CPU @ 3.00GHz)
|
||||
* Ubuntu 18.04 (hvm-ssd/ubuntu-bionic-18.04-amd64-server-20180912 ami-00035f41c82244dab)
|
||||
* Node.js v12.14.1
|
||||
* AWS EC2 eu-west-1 [c5d.large](https://aws.amazon.com/ec2/instance-types/c5/) (2x Xeon Platinum 8124M CPU @ 3.00GHz)
|
||||
* Ubuntu 20.04 (ami-0f1d11c92a9467c07)
|
||||
* Node.js v14.8.0
|
||||
|
||||
## Results
|
||||
|
||||
| Module | Input | Output | Ops/sec | Speed-up |
|
||||
| :----------------- | :----- | :----- | ------: | -------: |
|
||||
| jimp | buffer | buffer | 0.72 | 1.0 |
|
||||
| mapnik | buffer | buffer | 3.02 | 4.2 |
|
||||
| gm | buffer | buffer | 3.90 | 5.4 |
|
||||
| gm | file | file | 3.94 | 5.5 |
|
||||
| imagemagick | file | file | 4.30 | 6.0 |
|
||||
| sharp | stream | stream | 23.65 | 32.8 |
|
||||
| sharp | file | file | 24.66 | 34.3 |
|
||||
| sharp | buffer | buffer | 25.14 | 34.9 |
|
||||
| jimp | buffer | buffer | 0.75 | 1.0 |
|
||||
| mapnik | buffer | buffer | 3.00 | 4.0 |
|
||||
| gm | buffer | buffer | 4.12 | 5.5 |
|
||||
| gm | file | file | 4.13 | 5.5 |
|
||||
| imagemagick | file | file | 4.30 | 5.7 |
|
||||
| sharp | stream | stream | 22.37 | 29.8 |
|
||||
| sharp | file | file | 23.40 | 31.2 |
|
||||
| sharp | buffer | buffer | 24.01 | 32.0 |
|
||||
|
||||
Greater libvips performance can be expected with caching enabled (default)
|
||||
and using 8+ core machines, especially those with larger L1/L2 CPU caches.
|
||||
and using 4+ core machines, especially those with larger L1/L2 CPU caches.
|
||||
|
||||
The I/O limits of the relevant (de)compression library will generally determine maximum throughput.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "sharp",
|
||||
"description": "High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP and TIFF images",
|
||||
"version": "0.26.0-beta1",
|
||||
"version": "0.26.0",
|
||||
"author": "Lovell Fuller <npm@lovell.info>",
|
||||
"homepage": "https://github.com/lovell/sharp",
|
||||
"contributors": [
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
|
||||
// Verify platform and compiler compatibility
|
||||
|
||||
#if (VIPS_MAJOR_VERSION < 8 || (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION < 9))
|
||||
#error "libvips version 8.9.2+ is required - please see https://sharp.pixelplumbing.com/install"
|
||||
#if (VIPS_MAJOR_VERSION < 8 || (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION < 10))
|
||||
#error "libvips version 8.10.0+ is required - please see https://sharp.pixelplumbing.com/install"
|
||||
#endif
|
||||
|
||||
#if ((!defined(__clang__)) && defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)))
|
||||
|
||||
@@ -39,6 +39,16 @@
|
||||
Memcheck:Cond
|
||||
obj:*/libjpeg.so*
|
||||
}
|
||||
{
|
||||
value_jpeg_obj_static
|
||||
Memcheck:Value8
|
||||
obj:*/libvips.so*
|
||||
}
|
||||
{
|
||||
cond_jpeg_obj_static
|
||||
Memcheck:Cond
|
||||
obj:*/libvips.so*
|
||||
}
|
||||
{
|
||||
param_jpeg_jpeg_finish_compress
|
||||
Memcheck:Param
|
||||
@@ -304,6 +314,16 @@
|
||||
...
|
||||
fun:vips__init
|
||||
}
|
||||
{
|
||||
leak_rsvg_static_data
|
||||
Memcheck:Leak
|
||||
match-leak-kinds: definite
|
||||
fun:malloc
|
||||
...
|
||||
fun:rsvg_rust_handle_new_from_stream_sync
|
||||
...
|
||||
fun:vips_object_build
|
||||
}
|
||||
|
||||
# libuv warnings
|
||||
{
|
||||
@@ -418,6 +438,13 @@
|
||||
...
|
||||
fun:_ZN4node17CreateEnvironmentEPN2v87IsolateEP9uv_loop_sNS0_5LocalINS0_7ContextEEEiPKPKciSB_
|
||||
}
|
||||
{
|
||||
leak_nodejs_CreateEnvironment_IsolateData
|
||||
Memcheck:Leak
|
||||
match-leak-kinds: possible
|
||||
...
|
||||
fun:_ZN4node17CreateEnvironmentEPNS_11IsolateDataEN2v85LocalINS2_7ContextEEERKSt6vectorISsSaISsEESA_NS_16EnvironmentFlags5FlagsENS_8ThreadIdESt10unique_ptrINS_21InspectorParentHandleESt14default_deleteISF_EE
|
||||
}
|
||||
{
|
||||
leak_nodejs_Environment_Start
|
||||
Memcheck:Leak
|
||||
|
||||
@@ -161,9 +161,7 @@ describe('TIFF', function () {
|
||||
.then(() => sharp(fixtures.outputTiff)
|
||||
.metadata()
|
||||
.then(({ density }) => {
|
||||
assert.strictEqual(true,
|
||||
density === 2540 || // libvips <= 8.8.2
|
||||
density === 25400); // libvips >= 8.8.3
|
||||
assert.strictEqual(25400, density);
|
||||
return promisify(rimraf)(fixtures.outputTiff);
|
||||
})
|
||||
)
|
||||
@@ -179,9 +177,7 @@ describe('TIFF', function () {
|
||||
.then(data => sharp(data)
|
||||
.metadata()
|
||||
.then(({ density }) => {
|
||||
assert.strictEqual(true,
|
||||
density === 2540 || // libvips <= 8.8.2
|
||||
density === 25400); // libvips >= 8.8.3
|
||||
assert.strictEqual(25400, density);
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user