29-07-2013, 10:53 PM
Sous la forme
Au lieu de
Fichier-test:
Résultat:
1 ms pour le foreachCallback
600ms pour le .forEach() natif
Donc, oui, ici, on ne fait pas une bête réimplémentation de ce qui existe déjà nativement, mais bien une optimisation (sauf si je me suis viandé dans le code, mais cette fois, je crois que je n'ai aps oublié de réinitialiser le compteur de temps, et oui, l'init est moche, mais j'ai pas trouvé mieux)
Code :
function forEachCallback()
{
for (var i=0, s=this.datas.length; i<s; ++i)
{
// code du callback
}
}
Au lieu de
Code :
var func = function ()
{
// code du callback
}
myObject.datas.forEach(func);
Fichier-test:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<script>
function test()
{
var datas = [];
for (var i = 0;i<100000;++i)
datas.push(0);
function forEachCallback()
{
var debut = (new Date()).getTime();
for (var i=0, s=datas.length; i<s; ++i)
{
var that = datas[i];
}
var fin = (new Date()).getTime();
console.log('forEachCallback: ', fin-debut);
}
forEachCallback();
var func = function ()
{
}
var debut = (new Date()).getTime();
datas.forEach(func);
var fin = (new Date()).getTime();
console.log('forEach: ', fin-debut);
}
</script>
</head>
<body onload="test()">
</body>
</html>
Résultat:
1 ms pour le foreachCallback
600ms pour le .forEach() natif
Donc, oui, ici, on ne fait pas une bête réimplémentation de ce qui existe déjà nativement, mais bien une optimisation (sauf si je me suis viandé dans le code, mais cette fois, je crois que je n'ai aps oublié de réinitialiser le compteur de temps, et oui, l'init est moche, mais j'ai pas trouvé mieux)