jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase .
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2 Can be accessed at:
https://jsperf.app/negative-modulo/2 for vs forEach (v159) Revision 159 of this benchmark created on May 27, 2014 Description Is it faster to use the native forEach or just loop with for?
Inspired by Adrian Sutton's tests at: http://www.symphonious.net/2010/10/09/javascript-performance-for-vs-foreach/
This one adds random floating point numbers to see if the loop overhead is significant at all in the face of standard work.
Preparation HTML <script src ="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" > </script >
<script >
Array .prototype .forEach2 = function (a, scope ) {
var l = this .length , i = 0 ;
if (scope){
for (; i < l; i++) {
a.call (scope, this [i], i);
}
}else {
for (; i < l; i++) {
a (this [i], i);
}
}
};
Array .prototype .forEach3 = function (a, scope ) {
var l = this .length , i = 0 ;
for (; i < l; i++) {
scope?a.call (scope, this [i], i):a (this [i], i);
}
};
</script >
Setup var i,
key,
random,
array = [],
object = {},
sum = 0 ;
for (i = 0 ; i < 10000 ; i++) {
random = Math .random ();
array[i] = random;
object[i] = random;
}
function add (val ) {
sum += val;
}
Teardown
i = 0 ;
array = [];
object = {};
sum = 0 ;
Test runner Ready to run.
Run Quick Run Testing in Test Ops/sec forEach array.forEach (add);
ready
for loop, simple for (i = 0 ; i < array.length ; i++) {
add (array[i]);
}
ready
for loop, reverse for (i = array.length - 1 ; i >= 0 ; i--) {
add (array[i]);
}
ready
for key in object for (key in object) {
add (object[key]);
}
ready
forEach with anonymous function array.forEach (function (val ) {
sum += val;
});
ready
foreach2 array.forEach2 (add);
ready
foreach3 array.forEach3 (add);
ready
Revisions You can edit these tests or add more tests to this page by appending /edit to the URL.
Revision 1 : published by Adrian Sutton on October 7, 2010 Revision 2 : published by Adrian Sutton on October 7, 2010 Revision 3 : published by Adrian Sutton on October 7, 2010 Revision 5 : published by Adrian Sutton on October 7, 2010 Revision 9 : published by alk on April 23, 2011 Revision 10 : published on May 4, 2011 Revision 12 : published on September 15, 2011 Revision 15 : published on November 13, 2011 Revision 16 : published by RubaXa on February 20, 2012 Revision 17 : published on March 17, 2012 Revision 20 : published by Brandon Satrom on April 19, 2012 Revision 24 : published on May 9, 2012 Revision 26 : published by cfddream on May 11, 2012 Revision 27 : published by cfddream on May 11, 2012 Revision 31 : published by spongman on May 22, 2012 Revision 32 : published by James Pamplin on May 23, 2012 Revision 36 : published on July 14, 2012 Revision 37 : published on July 14, 2012 Revision 38 : published by Sujay on August 30, 2012 Revision 46 : published by wicked on October 12, 2012 Revision 47 : published on October 13, 2012 Revision 48 : published by smith on October 13, 2012 Revision 49 : published by smith on October 13, 2012 Revision 52 : published on December 1, 2012 Revision 53 : published by Jean Vincent on December 11, 2012 Revision 54 : published on January 1, 2013 Revision 56 : published on January 23, 2013 Revision 57 : published by Gajus on January 29, 2013 Revision 58 : published on January 30, 2013 Revision 59 : published on January 30, 2013 Revision 60 : published on January 31, 2013 Revision 61 : published on February 3, 2013 Revision 62 : published on February 4, 2013 Revision 63 : published on February 3, 2013 Revision 64 : published on February 5, 2013 Revision 65 : published on February 13, 2013 Revision 66 : published by gerhard on February 13, 2013 Revision 67 : published on February 25, 2013 Revision 68 : published on March 3, 2013 Revision 69 : published on March 18, 2013 Revision 70 : published on March 20, 2013 Revision 71 : published on March 21, 2013 Revision 75 : published on May 15, 2013 Revision 76 : published on May 29, 2013 Revision 77 : published on June 3, 2013 Revision 79 : published on June 28, 2013 Revision 81 : published by PhilT on July 8, 2013 Revision 82 : published on July 8, 2013 Revision 83 : published on July 8, 2013 Revision 84 : published on July 8, 2013 Revision 85 : published on July 8, 2013 Revision 87 : published by BrunoLM on July 16, 2013 Revision 88 : published on July 21, 2013 Revision 89 : published on July 24, 2013 Revision 90 : published on July 29, 2013 Revision 91 : published by runsun on July 29, 2013 Revision 92 : published on August 15, 2013 Revision 94 : published on August 29, 2013 Revision 95 : published on August 29, 2013 Revision 96 : published on August 30, 2013 Revision 98 : published on September 5, 2013 Revision 99 : published on September 19, 2013 Revision 100 : published on September 24, 2013 Revision 101 : published on September 25, 2013 Revision 102 : published on October 15, 2013 Revision 104 : published on October 25, 2013 Revision 105 : published on October 25, 2013 Revision 106 : published on October 25, 2013 Revision 107 : published on October 28, 2013 Revision 110 : published on November 14, 2013 Revision 111 : published by geoffff on December 4, 2013 Revision 113 : published on January 7, 2014 Revision 114 : published on January 9, 2014 Revision 115 : published on January 9, 2014 Revision 116 : published on January 10, 2014 Revision 119 : published on January 24, 2014 Revision 120 : published on January 24, 2014 Revision 121 : published on January 24, 2014 Revision 123 : published by Chen-Pang He on January 27, 2014 Revision 124 : published on January 27, 2014 Revision 125 : published by Erich Musick on January 27, 2014 Revision 127 : published on February 1, 2014 Revision 129 : published on February 11, 2014 Revision 131 : published on February 12, 2014 Revision 132 : published on February 12, 2014 Revision 133 : published by Sander Elias on February 13, 2014 Revision 134 : published on February 26, 2014 Revision 135 : published on February 27, 2014 Revision 136 : published by Sander Elias on March 1, 2014 Revision 137 : published by Sander Elias on March 1, 2014 Revision 138 : published by Sander Elias on March 1, 2014 Revision 140 : published on March 13, 2014 Revision 142 : published on March 17, 2014 Revision 143 : published on March 19, 2014 Revision 144 : published by lolmaus on March 30, 2014 Revision 145 : published on April 20, 2014 Revision 146 : published by Jesús Carrera on April 21, 2014 Revision 147 : published by Jesús Carrera on April 22, 2014 Revision 149 : published by csjdcjhs on April 22, 2014 Revision 150 : published on May 6, 2014 Revision 151 : published on May 6, 2014 Revision 152 : published by Warren Krewenki on May 9, 2014 Revision 153 : published on May 13, 2014 Revision 154 : published on May 18, 2014 Revision 155 : published on May 19, 2014 Revision 156 : published on May 21, 2014 Revision 157 : published by test34 on May 21, 2014 Revision 158 : published by magikMaker on May 21, 2014 Revision 159 : published on May 27, 2014 Revision 160 : published on May 28, 2014 Revision 162 : published by Joey Schooley on June 7, 2014 Revision 163 : published by Linas on June 8, 2014 Revision 164 : published by Linas on June 8, 2014 Revision 165 : published by Linas on June 8, 2014 Revision 167 : published on June 25, 2014 Revision 168 : published on July 2, 2014 Revision 169 : published on July 4, 2014 Revision 170 : published on July 6, 2014 Revision 171 : published on July 9, 2014 Revision 173 : published on July 14, 2014 Revision 174 : published on July 16, 2014 Revision 175 : published on July 16, 2014 Revision 176 : published on July 16, 2014 Revision 177 : published on July 17, 2014 Revision 179 : published on July 18, 2014 Revision 181 : published on July 27, 2014 Revision 182 : published on July 30, 2014 Revision 183 : published on August 1, 2014 Revision 184 : published by Konstantin Ivanov on August 1, 2014 Revision 187 : published by Konstantin Ivanov on August 2, 2014 Revision 188 : published on August 5, 2014 Revision 189 : published on August 6, 2014 Revision 190 : published by Rodney Golpe on August 7, 2014 Revision 197 : published by L3P3 on August 14, 2014 Revision 199 : published by brett on August 23, 2014 Revision 201 : published by mbijon on August 26, 2014 Revision 202 : published on August 26, 2014 Revision 203 : published on August 26, 2014 Revision 205 : published on September 3, 2014 Revision 212 : published on September 17, 2014 Revision 214 : published on September 18, 2014 Revision 215 : published on September 19, 2014 Revision 216 : published by Dave Hulme on September 22, 2014 Revision 217 : published on September 24, 2014 Revision 218 : published on September 24, 2014 Revision 219 : published on September 25, 2014 Revision 220 : published on September 25, 2014 Revision 221 : published by David Mulder on September 28, 2014 Revision 222 : published on September 30, 2014 Revision 223 : published on September 30, 2014 Revision 224 : published on September 30, 2014 Revision 226 : published by Alexey on September 30, 2014 Revision 227 : published by Sean Johnson on October 1, 2014 Revision 228 : published on October 1, 2014 Revision 231 : published by Test on October 9, 2014 Revision 232 : published by ktmud on October 9, 2014 Revision 233 : published by hiperonii on October 13, 2014 Revision 234 : published on October 15, 2014 Revision 236 : published by Andrew Marais on October 24, 2014 Revision 237 : published by muffin on October 25, 2014 Revision 238 : published on October 29, 2014 Revision 239 : published on October 30, 2014 Revision 240 : published by Ken on November 5, 2014 Revision 242 : published by dav on November 7, 2014 Revision 243 : published by dav on November 8, 2014 Revision 244 : published by Jose on November 13, 2014 Revision 245 : published by Jerry on November 24, 2014 Revision 246 : published by Andreas on November 28, 2014 Revision 247 : published on November 29, 2014 Revision 248 : published by Per on November 29, 2014 Revision 249 : published by Andreas on December 1, 2014 Revision 250 : published on December 1, 2014 Revision 251 : published by - on December 1, 2014 Revision 252 : published by Suraj on December 1, 2014 Revision 253 : published by Oskar Alexanderson on December 5, 2014 Revision 254 : published by Oskar Alexanderson on December 5, 2014 Revision 256 : published on December 18, 2014 Revision 257 : published on December 19, 2014 Revision 258 : published by Trol on December 19, 2014 Revision 259 : published on December 29, 2014 Revision 261 : published by Nick Tomlin on January 2, 2015 Revision 262 : published on January 3, 2015 Revision 263 : published on January 6, 2015 Revision 264 : published by Jason Mayes on January 8, 2015 Revision 265 : published by Krinkle on January 9, 2015 Revision 266 : published by add for of on January 12, 2015 Revision 267 : published on January 12, 2015 Revision 268 : published by Sam on January 14, 2015 Revision 269 : published on January 20, 2015 Revision 270 : published by Tahar on January 22, 2015 Revision 271 : published on January 22, 2015 Revision 272 : published by Anurag on January 22, 2015 Revision 273 : published by Spyryto on January 22, 2015 Revision 274 : published on February 2, 2015 Revision 276 : published by Peter on February 7, 2015 Revision 277 : published by Steven Wiggins on February 9, 2015 Revision 282 : published by Gregory Krohne on February 19, 2015 Revision 284 : published by Nathan on February 21, 2015 Revision 285 : published on February 25, 2015 Revision 286 : published by Tomasz on February 28, 2015 Revision 287 : published by Fedir on March 2, 2015 Revision 288 : published on March 9, 2015 Revision 289 : published by TooBug on March 11, 2015 Revision 291 : published on March 19, 2015 Revision 292 : published on March 19, 2015 Revision 293 : published by Maxime Warnier on March 22, 2015 Revision 294 : published by bob on March 22, 2015 Revision 295 : published by bob on March 24, 2015 Revision 296 : published by bob on March 25, 2015 Revision 297 : published on March 28, 2015 Revision 298 : published by Sebastian Nette on March 29, 2015 Revision 299 : published on March 29, 2015 Revision 300 : published on March 30, 2015 Revision 301 : published on March 31, 2015 Revision 303 : published by CSS style setter on April 6, 2015 Revision 304 : published by Adam Kendall on April 8, 2015 Revision 306 : published on April 15, 2015 Revision 307 : published on April 15, 2015 Revision 308 : published on April 15, 2015 Revision 309 : published on April 15, 2015 Revision 310 : published by mina86 on April 16, 2015 Revision 311 : published on April 20, 2015 Revision 312 : published on April 23, 2015 Revision 313 : published on April 23, 2015 Revision 314 : published on April 24, 2015 Revision 315 : published by 654 on April 24, 2015 Revision 316 : published on April 24, 2015 Revision 317 : published on April 29, 2015 Revision 318 : published on May 3, 2015 Revision 319 : published on May 13, 2015 Revision 320 : published on May 20, 2015 Revision 321 : published on May 20, 2015 Revision 323 : published on May 22, 2015 Revision 324 : published on May 27, 2015 Revision 325 : published by jkutianski on May 27, 2015 Revision 326 : published by jkutianski on May 27, 2015 Revision 327 : published on May 27, 2015 Revision 328 : published on May 28, 2015 Revision 329 : published on May 28, 2015 Revision 330 : published by Paul West on June 2, 2015 Revision 332 : published on June 5, 2015 Revision 333 : published on June 8, 2015 Revision 337 : published on June 11, 2015 Revision 338 : published on June 14, 2015 Revision 339 : published on June 14, 2015 Revision 341 : published on June 16, 2015 Revision 342 : published by mvince on June 17, 2015 Revision 343 : published on July 14, 2015 Revision 344 : published by cascascascascas on July 14, 2015 Revision 345 : published by Asa on July 15, 2015 Revision 346 : published by Christopher Haws on August 4, 2015 Revision 348 : published by foreach vs while on August 19, 2015 Revision 349 : published by Waqar Khan on August 20, 2015 Revision 351 : published on August 24, 2015 Revision 352 : published on August 26, 2015 Revision 353 : published on August 26, 2015 Revision 354 : published by electron on September 2, 2015 Revision 355 : published by electron on September 2, 2015 Revision 356 : published on September 2, 2015 Revision 357 : published on September 2, 2015 Revision 358 : published by dened on September 4, 2015 Revision 359 : published by alex on September 4, 2015 Revision 360 : published by electron on September 6, 2015 Revision 361 : published on September 7, 2015 Revision 364 : published on September 16, 2015 Revision 365 : published by nar on September 16, 2015 Revision 366 : published on September 17, 2015 Revision 369 : published on September 17, 2015 Revision 378 : published by ali on September 27, 2015 Revision 379 : published by ali on September 27, 2015 Revision 380 : published by ali on September 27, 2015 Revision 381 : published by ali on September 27, 2015 Revision 383 : published on September 28, 2015 Revision 384 : published by Myron Yao on September 29, 2015 Revision 386 : published on October 5, 2015 Revision 387 : published on October 5, 2015 Revision 388 : published by Pascal on October 7, 2015 Revision 389 : published by GeoTest on October 7, 2015 Revision 390 : published on October 7, 2015 Revision 391 : published on October 8, 2015 Revision 392 : published on October 8, 2015 Revision 393 : published on October 10, 2015 Revision 394 : published on October 13, 2015 Revision 395 : published on October 13, 2015 Revision 396 : published by psion on October 13, 2015 Revision 397 : published by psion on October 13, 2015 Revision 398 : published by npayot on October 14, 2015 Revision 399 : published on October 17, 2015 Revision 401 : published by Arkh on October 23, 2015 Revision 403 : published by jKey on October 28, 2015 Revision 405 : published by Amuseum on November 2, 2015 Revision 406 : published by Amuseum on November 3, 2015 Revision 407 : published by Amuseum on November 3, 2015 Revision 408 : published on November 6, 2015 Revision 409 : published on November 10, 2015 Revision 410 : published on November 11, 2015 Revision 412 : published by Amuseum on November 12, 2015 Revision 413 : published by Amuseum on November 12, 2015 Revision 414 : published by Amuseum on November 12, 2015 Revision 415 : published by Amuseum on November 12, 2015 Revision 416 : published by Amuseum on November 12, 2015 Revision 417 : published on November 20, 2015 Revision 418 : published on November 21, 2015 Revision 420 : published by eviltwist on November 25, 2015 Revision 427 : published on December 4, 2015 Revision 431 : published by Ramu on December 11, 2015 Revision 432 : published on December 11, 2015 Revision 434 : published by drpicox on December 11, 2015 Revision 435 : published on December 13, 2015 Revision 441 : published by pusha on January 10, 2016 Revision 458 : published on February 5, 2016 Revision 475 : published on February 17, 2016 Revision 477 : published on February 20, 2016 Revision 478 : published on February 20, 2016 Revision 479 : published on February 24, 2016 Revision 484 : published by ashley on February 25, 2016 Revision 487 : published by Jimmy on March 1, 2016 Revision 511 : published by Levi on March 17, 2016 Revision 575 : published by Josep del Rio on December 22, 2018 Revision 601 : published on April 12, 2019 Revision 606 : published by Steven Murray on April 26, 2019 Revision 608 : published by Andrii Muzalevskyi on April 29, 2019 Revision 612 : published by iaiao on May 15, 2019 Revision 613 : published on May 15, 2019 Revision 614 : published on May 15, 2019 Revision 616 : published on November 16, 2023 Revision 617 : published on November 16, 2023