From 78c626f98f64fa71d60f3aa3709248f3c1dc968c Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Fri, 4 Jan 2019 10:40:22 +0000 Subject: [PATCH] Updated README and nativeoverutil Improved the examples and swapped some text with images. --- README.md | 2 +- assets/images/concat-benchmark.png | Bin 0 -> 13992 bytes assets/images/sampleMeanDiag.png | Bin 0 -> 46909 bytes sections/performance/nativeoverutil.md | 45 +++++++------------------ 4 files changed, 14 insertions(+), 33 deletions(-) create mode 100644 assets/images/concat-benchmark.png create mode 100644 assets/images/sampleMeanDiag.png diff --git a/README.md b/README.md index 9c907cd9..92de2d4a 100644 --- a/README.md +++ b/README.md @@ -958,7 +958,7 @@ All statements above will return false if used with `===` ## ![✔] 7.1. Prefer native JS methods over user-land utils like Lodash **TL;DR:** It's often more penalising to use utility libraries like `lodash` and `underscore` over native methods as it leads to unneeded dependencies and slower performance. - Bar in mind that with the introduction of the new V8 engine alongside the new ES standards, native methods were improved in such a way that it's now about 50% more performant than utility libraries. + Bear in mind that with the introduction of the new V8 engine alongside the new ES standards, native methods were improved in such a way that it's now about 50% more performant than utility libraries. **Otherwise:** You'll have to maintain less performant projects where you could have simply used what was **already** available or dealt with a few more lines in exchange of a few more files. diff --git a/assets/images/concat-benchmark.png b/assets/images/concat-benchmark.png new file mode 100644 index 0000000000000000000000000000000000000000..62412363bc416e855fff6e565862a523ae9b0c1f GIT binary patch literal 13992 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 Kr79&%0{;UWkgc!) literal 0 HcmV?d00001 diff --git a/sections/performance/nativeoverutil.md b/sections/performance/nativeoverutil.md index 5f3da7a8..a255a2c2 100644 --- a/sections/performance/nativeoverutil.md +++ b/sections/performance/nativeoverutil.md @@ -20,50 +20,31 @@ The performance using native methods result in an overall ~50% gain which includ

-### Code Example – Benchmark test on `_.concat`/`Array.concat` +### Example: benchmark comparison - Lodash vs V8 (Native) +The graph below shows the mean of the benchmarks for a variety of Lodash methods, this shows that Lodash methods take on average 146.23% more time to complete the same tasks as V8 methods. +![meanDiag](../../assets/images/sampleMeanDiag.png) + +### Code Example – Benchmark test on `_.concat`/`Array.concat` ```javascript const _ = require('lodash'), __ = require('underscore'), Suite = require('benchmark').Suite, - chalk = require('chalk'); - -function onComplete() { - let fastest = String(this.filter('fastest').map('name')), - slowest = String(this.filter('slowest').map('name')); - console.log(`\tBenchmark: ${chalk.cyan(this.name)}\nThe fastest is ${chalk.black.bgGreen(fastest)}\nThe slowest is ${chalk.black.bgRed(slowest)}\n`) -} -const onCycle = event => console.log(`${event.target}`); -const opts = { - onComplete, - onCycle -}; + opts = require('./utils'); //cf. https://github.com/Berkmann18/NativeVsUtils/blob/master/utils.js const concatSuite = new Suite('concat', opts); -const a0 = [1]; +const array = [0, 1, 2]; -concatSuite - .add('lodash', () => _.concat(a0, 2, [3], [ - [4] - ])) - .add('underscore', () => __.concat(a0, 2, [3], [ - [4] - ])) - .add('native', () => a0.concat(2, [3], [ - [4] - ])) +concatSuite.add('lodash', () => _.concat(array, 3, 4, 5)) + .add('underscore', () => __.concat(array, 3, 4, 5)) + .add('native', () => array.concat(3, 4, 5)) .run({ 'async': true }); ``` Which returns this: -```bash -lodash x 1,896,368 ops/sec ±5.64% (89 runs sampled) -underscore: -native x 2,488,685 ops/sec ±6.46% (86 runs sampled) - Benchmark: concat -The fastest is native -The slowest is lodash -``` + +![output](../../assets/images/concat-benchmark.png) + You can find a bigger list of benchmarks [here](https://github.com/Berkmann18/NativeVsUtils/blob/master/index.txt) or alternatively [run this](https://github.com/Berkmann18/NativeVsUtils/blob/master/index.js) which would show the same but with colours. ### "You don't (may not) need Lodash/Underscore"