Ma situation
J'écris un article présentant un module logiciel que j'ai développé et je veux comparer son temps d'exécution à d'autres modules pour la même tâche. Je suis conscient des inconvénients des expériences d'exécution , mais supposez, étant donné qu'il n'y a aucun moyen de contourner cela dans mon cas. (Je peux théoriquement déduire certaines propriétés, mais cela ne suffit pas pour tout.)
Les scénarios spécifiques que je veux utiliser pour l'analyse comparative ont deux paramètres: la complexité du problème et une graine aléatoire qui détermine le problème détaillé. Je veux surtout montrer la dépendance de . En partant des investigations préliminaires et de la théorie, l'influence de sur le temps d'exécution est mineure ou négligeable. Une seule tâche prend au plus dix minutes.r n r
Question réelle
Je recherche une procédure communément acceptée ou publiée sur la réalisation de telles expériences ou au moins une liste des pièges courants (idéalement publiés).
Ce que j'ai trouvé jusqu'à présent
Rien. Les recherches sur Internet produisent toutes sortes de résultats non liés, mais je n'utilise peut-être pas la bonne terminologie. Y compris le mot-clé minimum, que je sais être un bon standard (voir ci-dessous), n'a pas aidé non plus.
Comment je le ferais
Exécutez toutes les expériences sur la même machine avec un logiciel potentiellement interférent tel qu'une interface graphique désactivée autant que possible.
Soumettez tous les modules à la même sélection de scénarios, c'est-à-dire les mêmes et .r
Pour chaque scénario, testez les différents modules directement les uns après les autres dans un ordre aléatoire. En d'autres termes, la boucle sur les différents modules est la plus interne. Cela devrait éviter les biais sur les différents modules en raison des fluctuations lentes des performances de la machine (par exemple, en raison des changements de température). L'ordre aléatoire devrait éviter les biais à travers des effets tels que la mise en cache ou un module toujours testé après le même.
Pour chaque , prenez le temps d'exécution minimum sur plusieurs scénarios avec différentes graines comme référence. Cela devrait éviter les biais sur les différents modules en raison des fluctuations de courte durée des performances de la machine qui rendent les exécutions individuelles exceptionnellement mauvaises.
Réponses:
Le "Guide de l'algorithmique expérimentale" de CC McGeoch est une bonne référence pour
la source
En plus du temps écoulé pour chaque exécution, signalez les secondes du mode utilisateur et système, ainsi que le nombre total de paquets IP et le nombre total d'E / S de disque, ne serait-ce que pour vérifier que certains nombres sont systématiquement "faibles" et ont un impact négligeable sur le temps écoulé.
Sur https://wiki.freebsd.org/BenchmarkAdvice PHK et d'autres offrent de bons conseils, y compris
la source