2010-12-09 24 views
4

J'ai exécuté un test jsperf simple et tout s'est déroulé comme prévu lors de l'exécution dans Firefox, mais quand j'ai exécuté le test dans Google Chrome, il était confus.Différence de vitesse de déclaration de fonction dans JS

Le test teste différentes façons de déclarer une fonction en JavaScript, puis de l'appeler. Ma conjecture est que Chrome fait une sorte d'optimisation sur la fonction JavaScript, mais je ne suis pas sûr de quoi ou pourquoi il y a une telle différence. Toute aide ou des liens pour mieux comprendre cela est grandement apprécié.

Lien vers test =>http://jsperf.com/function-assignment-semicolon/2

essai dans Firefox:

alt text

Test dans Chrome:

alt text


Edit:

Je pensais les résultats que j'ai obtenu de Firefox parce que je les attendais à être - assez le même pour chaque test - plus lent que lorsqu'il est exécuté dans Google Chrome

+1

Pourquoi avez-vous attendu le résultat affiché par Firefox? – Gumbo

+0

Je considérerais cela comme un puissant problème de micro-optimisation et à moins que vous n'essayiez vraiment de comprendre les mécanismes internes d'optimisation des différents navigateurs, je dirais - jetez-le !! – InSane

+0

@Gumbo, je m'attendais à ce qu'ils soient assez similaires et plus lent que Chrome et ils l'étaient. –

Répondre

2

code mort, un parfait optimiseur supprimerait tout dans le test. Cela a été mentionné sur divers sites d'information avec l'annonce récente du moteur Crankshaft de Google. Les différences entre les styles sont une indication de la difficulté d'implémenter l'optimisation de code mort.

http://tech.slashdot.org/story/10/12/07/2027259/Google-Quietly-Posts-Big-JavaScript-Engine-Update

+0

Excellent lien mais je ne pense pas que ma version de chrome ait la mise à jour dont parle votre lien. –