From 1c9c4d63fb4759823c44b27779cd97ef90cb25b0 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Wed, 9 Jan 2019 14:49:03 +0000 Subject: [PATCH] Revisited nativeoverutil.md --- assets/images/ydnlu.png | Bin 30942 -> 4693 bytes sections/performance/nativeoverutil.md | 44 +++++++++++-------------- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/assets/images/ydnlu.png b/assets/images/ydnlu.png index 52bb864e4c865ba5131718dacc026eead32b5243..871a391be41e62aeac0310b740841487e003266f 100644 GIT binary patch literal 4693 zcmcIndpJ~U+n*vG)lMo!O`;^B5=EHMevue2nVd(_mWE~{XEW2L!!DVL$#F2dD2bVI z9 mn1)17;}D~Ukuh?b8RoENUiN;!>-zru{`v0fT5H|Udam`X-~C(n`aSpk#M#MK zdE3ElAP`8|-tMvs2&AC5<{NKOT02|$-#fW>*%0nxYYifQ)|govCrcd0;y5?voc-VSDVfREw;GvX`Eoj7LbkRf$ATgdtj zOqWTRweI>Jwc{+4$L#pW6amX;o-o>aX7E=my@wOq!_h3A3b++DM(Oq$GT%vEL1N~Q zhZYeSrc;A=w`HW3L{FMi;oht_7QE<3h``xXf(nPlK3A8D=DSg2UmpQ+$$s}{bH1C= zwB_0P@@!ez8-RLyC7fmZ*|8p%`z;aYmb%xop8c(Q_;JDaBiicws$`2t%`~#T(sMpE z#k8CI9S)e+3Q?Oo*ptmewq^(4W21QlhDIf!<@MJBszKmRB`ke8nC}%hBldYp%uB7A zcZ;9(wrWR(KLzBeQUq3J2a}p}R&P2&vO3=3{y0X@rhI%MleGGTM-3%KxJJwAZp$+R z(T!t2r^#4fnry*!xtn!8#SollLfeZKj}n~abUeobk>O;YXH1mIielv4pk>`>`#X!q z3{moXuUaIfW>8FO72$j(s$zVr+(;%wHNagc1x@S05KlP=ArqFoN)txF?-8(5o=(@`b6c3ag{|ROKtDT@vyIxR8hR zCUd~`RsW#8w;HbR5tLh0Zd$NilZ2>W`1sAt)^Wa0{G;X@YW8_;9*cMT+2}-%DB(v( z()MFoU67i;-ok5~S4cZWN*@3n?Czp^4YX*e~pM`tT zj3v|MB{W-_v6L`!T+XK84F?Ci5g5x|hSSj_pPH8_BjRIOe84DU;CcHrFel1F?dKV) z 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 literal 30942 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

ga{k|P&C|z3p_ky_VrdSn5DpP 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 C;u|Xf diff --git a/sections/performance/nativeoverutil.md b/sections/performance/nativeoverutil.md index a255a2c2..e8b3e628 100644 --- a/sections/performance/nativeoverutil.md +++ b/sections/performance/nativeoverutil.md @@ -5,15 +5,8 @@ ### One Paragraph Explainer -Sometimes, using native methods is better than requiring `lodash` or `underscore` because it **will not lead in a performance boost** and use more space than necessary. -The performance using native methods result in an overall ~50% gain which includes the following methods: - - `Array.concat` - - `Array.fill` - - `Array.filter` - - `Array.map` - - `(Array|String).indexOf` - - `Object.find` - - ... +Sometimes, using native methods is better than requiring `lodash` or `underscore` because it will not lead in a performance boost and use more space than necessary. +The performance using native methods result in an [overall ~50% gain](https://github.com/Berkmann18/NativeVsUtils/blob/master/analysis.xlsx) which includes the following methods: `Array.concat`, `Array.fill`, `Array.filter`, `Array.map`, `(Array|String).indexOf`, `Object.find`, ... @@ -21,7 +14,7 @@ The performance using native methods result in an overall ~50% gain which includ

### 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. +The graph below shows the [mean of the benchmarks for a variety of Lodash methods](https://github.com/Berkmann18/NativeVsUtils/blob/master/nativeVsLodash.ods), 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) @@ -47,29 +40,30 @@ Which returns this: 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" +### Blog Quote: "You don't (may not) need Lodash/Underscore" From the [repo on this matter which focuses on Lodash and Underscore](https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore). > Lodash and Underscore are great modern JavaScript utility libraries, and they are widely used by Front-end developers. However, when you are targeting modern browsers, you may find out that there are many methods which are already supported natively thanks to ECMAScript5 [ES5] and ECMAScript2015 [ES6]. If you want your project to require fewer dependencies, and you know your target browser clearly, then you may not need Lodash/Underscore. - There's also an [ESLint plugin](https://www.npmjs.com/package/eslint-plugin-you-dont-need-lodash-underscore) which detects where you're using libraries but don't need to. - -Here's an example of that plugin in use: -Consider a file called _lodashLove.js_ shown below -```js -const _ = require('lodash'); - -let arr = [0, 1, 2, 4, 8, 16]; - -console.log(_.map(arr, x => `d${x}`)); - -if (_.includes(arr, 0)) console.log('0 found'); - -console.log('compacted:', _.compact(arr)); +### Example: Linting for non-native methods usage +There's an [ESLint plugin](https://www.npmjs.com/package/eslint-plugin-you-dont-need-lodash-underscore) which detects where you're using libraries but don't need to by warning you with suggestions (cf. example below).
+The way you set it up is by adding the `eslint-plugin-you-dont-need-lodash-underscore` plugin to your ESLint configuration file: +```json +{ + "extends": [ + "plugin:you-dont-need-lodash-underscore/compatible" + ] +} ``` ### Example: detecting non-v8 util usage using a linter +Consider the file below: +```js +const _ = require('lodash'); +// ESLint will flag the line above with a suggestion +console.log(_.map([0, 1, 2, 4, 8, 16], x => `d${x}`)); +``` Here's what ESLint would output when using the YDNLU plugin. ![output](../../assets/images/ydnlu.png)