DEV Community

Discussion on: 1 line of code: How to get the average of an array

Collapse
 
jonrandy profile image
Jon Randy πŸŽ–οΈ • Edited

The initial value of 0 is unnecessary. The function will be faster without it (but it will error if you pass an empty array - which is arguably desirable behaviour since getting a result of NaN with an empty array in the original function is also nonsensical).

const average = arr => arr.reduce((a, b) => a + b) / arr.length
Enter fullscreen mode Exit fullscreen mode
Collapse
 
martinkr profile image
Martin Krause

Hi Randy,

thank you for your contribution.
I was curious about your suggestion and created a performance test on hasty.dev. When I run the tests on Chrome and Safari the original version is faster for me.
Do you mind taking a look?

Cheers,

Martin

Collapse
 
jonrandy profile image
Jon Randy πŸŽ–οΈ

The code editing on Hasty is really buggy too

Collapse
 
jonrandy profile image
Jon Randy πŸŽ–οΈ • Edited

On Chrome - the two methods are practically neck and neck. On Firefox, the second one is consistently faster, but not by a huge amount. The second should logically be faster as it performs 1 less loop than the one with the initial 0.

Performance Link

Thread Thread
 
martinkr profile image
Martin Krause

Logically yes, but it's like 10% faster - also at the url you set up - with an initial 0 for me.

Thread Thread
 
jonrandy profile image
Jon Randy πŸŽ–οΈ • Edited

On the link above (all tests on my macbook) - Chrome has near identical speed for both functions (occasionally the first will be faster than the other, but also sometimes the second). On Firefox, the second function is always faster. So, on balance it seems that without initialising the 0 is faster overall (as logically expected). The JS engine in Chrome is clearly doing some smarter optimisation

Update: Just tried Chrome and Firefox on Ubuntu too - same results as for the macbook

Thread Thread
 
martinkr profile image
Martin Krause

Hmm ... let's say ... we'll just go with the logic and I'll update the article and the code. :D
Thank you for your time and investigations.