Comments (6)
Hey
Thanks for this, it's true that this part need to be refactored!
I try to write while I learn, so I'm going updating when I understand better about JS internal
Related with this part, also included something I read from https://hackernoon.com/how-to-make-the-fastest-promise-library-f632fd69f3cb could be interesting about avoid creating unnecessary variables, functions and instances.
PR are welcome 😄
from js-mythbusters.
I'd love to make you a PR but unfortunately I speak better JavaScript than english 😂
from js-mythbusters.
I also would like to mention that on this part I tried to benchmark the last tip (while loop with decrementing index) and it's super slow on Chrome (V8). It's like 10 times slower than a "standard for loop". Can you confirm that or am I doing something wrong ?
from js-mythbusters.
@PierreCapo Interesting, I could only make some assumptions here without the code and deeper analysis.
Another optimization that engines do is called loop unrolling. It might be Chrome not unrolling this loop because of the decrement? Out of curiousity if you increment it instead do you have a difference?
It's good to mention that it may also depend on how you initialized your array, its content and if it's sparsed.
from js-mythbusters.
@ngryman please, do the PR! 🙏
@PierreCapo could be simple create a tiny benchmark and compare result.
I did it with the following code
'use strict'
var bench = require('fastbench')
const n = 100000
const arr = Array.from({length: n}, (value, index) => index)
const EXPECTED_RESULT = 4999950000
var run = bench([
function forEach (done) {
let result = 0
arr.forEach(item => {
result = result + item
})
if (result !== EXPECTED_RESULT) throw Error('invalid result')
done()
},
function reduce (done) {
const result = arr.reduce((acc, item) => acc + item)
if (result !== EXPECTED_RESULT) throw Error('invalid result')
done()
},
function whileLoop (done) {
let result = 0
let index = arr.length
while (index--) result = result + arr[index]
if (result !== EXPECTED_RESULT) throw Error('invalid result')
done()
}
], 1000)
// run them two times
run(run)
results on my local (node 9.x)
❯ node index.js
forEach*1000: 1779.441ms
reduce*1000: 2863.238ms
whileLoop*1000: 253.822ms
forEach*1000: 2116.119ms
reduce*1000: 1727.525ms
whileLoop*1000: 162.896ms
from js-mythbusters.
In addition, I have open another issue related to be possible live demo on the site (like this benchmark) #70
from js-mythbusters.
Related Issues (20)
- Inaccurate regex.test info HOT 1
- Add WeakMaps section
- Rewrite bind section
- Unusual example in the inline-initialization.md HOT 2
- Add how to clone section
- Passing arguments by reference vs value
- setImmediate vs setTimeout vs process.nextTick HOT 1
- RunKit integration
- Symbol API explained HOT 2
- Node single event loop and multi-threading. HOT 1
- .toString and .toJSON serialization HOT 1
- JS code caching
- Write about bigInt
- Unable to click the last item of navbar HOT 1
- Regular Expression Flags
- Add Pagination
- Add search
- Update Logo
- Upgrade docsify HOT 2
- The variable access tip is outdated HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from js-mythbusters.