From deacd553bfc220a1a032121e4e9d0ba3deca7d02 Mon Sep 17 00:00:00 2001 From: Lovell Fuller Date: Wed, 19 Sep 2018 21:42:40 +0100 Subject: [PATCH] Enable SIMD convolution by default #1213 --- docs/changelog.md | 3 +++ lib/utility.js | 13 +++++-------- test/fixtures/expected/extract-lch.jpg | Bin 13057 -> 13022 bytes test/unit/extract.js | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 53b9c83f..441d6553 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -9,6 +9,9 @@ Requires libvips v8.7.0. * Drop Node 4 support. [#1212](https://github.com/lovell/sharp/issues/1212) +* Enable SIMD convolution by default. + [#1213](https://github.com/lovell/sharp/issues/1213) + * Add experimental prebuilt binaries for musl-based Linux. [#1379](https://github.com/lovell/sharp/issues/1379) diff --git a/lib/utility.js b/lib/utility.js index 1cb26a61..83c06d14 100644 --- a/lib/utility.js +++ b/lib/utility.js @@ -82,23 +82,20 @@ function counters () { * Improves the performance of `resize`, `blur` and `sharpen` operations * by taking advantage of the SIMD vector unit of the CPU, e.g. Intel SSE and ARM NEON. * - * This feature is currently off by default but future versions may reverse this. - * Versions of liborc prior to 0.4.25 are known to segfault under heavy load. - * * @example * const simd = sharp.simd(); - * // simd is `true` if SIMD is currently enabled + * // simd is `true` if the runtime use of liborc is currently enabled * @example - * const simd = sharp.simd(true); - * // attempts to enable the use of SIMD, returning true if available + * const simd = sharp.simd(false); + * // prevent libvips from using liborc at runtime * - * @param {Boolean} [simd=false] + * @param {Boolean} [simd=true] * @returns {Boolean} */ function simd (simd) { return sharp.simd(is.bool(simd) ? simd : null); } -simd(false); +simd(true); /** * Decorate the Sharp class with utility-related functions. diff --git a/test/fixtures/expected/extract-lch.jpg b/test/fixtures/expected/extract-lch.jpg index 8de27d15fda7e5b4d4d7704eba6f20947943fcb7..af8644dab2486d2cf5571bb4915a1005266845d3 100644 GIT binary patch delta 12456 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 m2)$<;~PCBa-1;a+*`LI2qn!QJ`* delta 12419 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 Bj5GiM diff --git a/test/unit/extract.js b/test/unit/extract.js index c8aa4a42..9b9629f0 100644 --- a/test/unit/extract.js +++ b/test/unit/extract.js @@ -115,7 +115,7 @@ describe('Partial image extraction', function () { if (err) throw err; assert.strictEqual(280, info.width); assert.strictEqual(380, info.height); - fixtures.assertSimilar(fixtures.expected('rotate-extract.jpg'), data, { threshold: 6 }, done); + fixtures.assertSimilar(fixtures.expected('rotate-extract.jpg'), data, { threshold: 7 }, done); }); });