Question

Aujourd'hui, j'ai visité jsPerf et maintenant je me demande…

  1. Qu’est-ce que « opérations/s » ?
  2. Combien d'itérations ça fait ?
  3. 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.

Était-ce utile?

La solution

J'ai écrit Benchmark.js, lequel jsPerf les usages.

  1. "ops/sec" signifie opérations par seconde.C'est le nombre de fois qu'un test devrait s'exécuter en une seconde.

  2. 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 pour 5 secondes (configurable), ou au moins 5 court (également configurable), puis effectuez une analyse statistique sur l'échantillon.Un test peut donc être répété 100,000 fois dans 50 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.

  3. 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 un 5.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 Benchmarks JavaScript à balle Article des auteurs.Il utilise Benchmark.js BTW, qui est open source.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top