Comment fonctionne jsPerf ?
-
13-11-2019 - |
Question
Aujourd'hui, j'ai visité jsPerf et maintenant je me demande…
- Qu’est-ce que « opérations/s » ?
- Combien d'itérations ça fait ?
- Sur quelle base calcule-t-il ce qui est le plus rapide ?Quelle est la formule derrière ces calculs ?
Exemple: http://jsperf.com/concatenation-vs-join
Quelqu'un peut-il me le dire ?
Merci d'avance.
La solution
J'ai écrit Benchmark.js, lequel jsPerf les usages.
"
ops/sec
" signifie opérations par seconde.C'est le nombre de fois qu'un test devrait s'exécuter en une seconde.Un test est exécuté de manière répétée jusqu'à ce qu'il atteigne le temps minimum nécessaire pour obtenir un pourcentage d'incertitude pour la mesure de inférieur ou égal à
1%
.Le nombre d'itérations varie en fonction de la résolution du minuteur de l'environnement et du nombre de fois qu'un test peut être exécuté dans le temps d'exécution minimum.Nous collectons les tests terminés pour5
secondes (configurable), ou au moins5
court (également configurable), puis effectuez une analyse statistique sur l'échantillon.Un test peut donc être répété100,000
fois dans50 ms
(la durée d'exécution minimale pour la plupart des environnements), puis répété100
fois plus (5
secondes).Un échantillon plus grand (dans cet exemple,100
), conduit à un plus petit marge d'erreur.Nous basons la décision quant au test le plus rapide sur plus que le simple nombre d'opérations/s en tenant également compte de la marge d'erreur.Par exemple, un test avec un nombre d'opérations/s plus faible mais une marge d'erreur plus élevée peut être statistiquement indiscernable à partir d'un test avec des opérations/sec plus élevées et une marge d'erreur plus faible.
Nous avons utilisé un test t de Welch, semblable à ce que SoleilAraignée utilise, mais je suis passé à un test t à 2 échantillons non appariés pour une variance égale (l'écart est extrêmement faible) parce que le test T de Welch avait des problèmes pour comparer les opérations/sec inférieures et les opérations/sec supérieures avec de petites variances, ce qui provoquait le degrés de liberté être calculé comme étant inférieur à
1
.Nous ajoutons également un5.5%
allocation pour les tests avec des opérations/sec similaires, car les tests dans le monde réel ont montré que des tests identiques peuvent basculer ~5%
de test en re-test.Les tests T sont utilisés pour vérifier que les différences entre les tests sont statistiquement significatif.
Autres conseils
Vous pouvez lire