Supposons que j'ai des versions lentes et rapides d'un code et que je souhaite signaler un numéro d'accélération comparant les deux. Je lance la version lente fois et la version rapide fois, produisant des temps et . La façon la plus simple de produire une accélération est de faire la moyenne des moyennes: Cependant, cela ne prend pas en compte les valeurs aberrantes.m ( s 1 , … , s n ) ( f 1 , … , f m ) ˉ s
Question : Quelle est la meilleure statistique à utiliser lors de la déclaration des nombres d'accélération?
statistics
publications
Geoffrey Irving
la source
la source
Réponses:
En plus de tout ce que Bill Barth a déjà dit ci-dessus, permettez-moi de mentionner que les gens signalent souvent le plus rapide de plusieurs courses. La raison en est que le temps d'exécution réel est le temps d'exécution idéal , plus un certain nombre de ralentissements résultant d'autres processus en cours d'exécution, des retards OS, des retards réseau, etc. Étant donné que ce sont tous des bruits qui ne nous intéressent pas, l'utilisation du temps d' exécution le plus rapide vient le plus proche de celui que nous voulons vraiment savoir.
la source
yes A is theoretically only ~3x faster
:, une accélération de ~ 3x non représentative de l'accélération sur pourrait-elle s'attendre lors de l'utilisation de l'implémentation A au lieu de B? (Ceci est un exemple réel en passant)Je vous suggère d'utiliser la médiane pour donner une estimation statistique. Contrairement à la moyenne, la médiane n'est pas corrompue par les valeurs aberrantes.
la source
Si l'écart-type n'est pas négligeable, vous pouvez utiliser deux parcelles parallèles côte à côte, construites chacune avec le timing d'un des algorithmes. Ils ne sont certainement pas standard dans l'analyse numérique, mais ils font un excellent travail en affichant ce type d'informations.
la source