Je compare deux méthodes itératives pour inverser des matrices carrées aléatoires. Étant donné que les matrices sont aléatoires, chaque cas de test prend à la fois différentes quantités d'itérations et différents temps écoulés. Ma question est, en plus du temps CPU moyen, est la valeur moyenne des itérations prises par les deux méthodes des informations utiles pour comparer les méthodes.
performance
benchmarking
srijan
la source
la source
Réponses:
En général, les deux méthodes de comparaison des performances ont leur place.
La comparaison du temps processeur est en quelque sorte la mesure la plus intéressante, car à la fin de la journée, vous êtes vraiment intéressé par la méthode la plus rapide. (Mais assurez-vous que les critères de terminaison sont comparables; par exemple, que les deux méthodes donnent une approximation avec la même précision). L'inconvénient est que cela ne vous indique que la méthode (et surtout, quelle implémentation ) est la plus rapide sur la machine sur laquelle vous avez effectué les tests. Il n'y a aucune garantie qu'une machine différente avec une architecture ou un logiciel différent choisirait le même gagnant.
La comparaison des nombres d'itérations , en revanche, est indépendante de la machine, mais peut être trompeuse si les deux méthodes ont des itérations très différentes - dans ce cas, la méthode avec des itérations moins nombreuses mais plus chères pourrait ne pas être préférable (par exemple, Newton vs méthodes de gradient pour l'optimisation). si vous n'avez besoin que d'une très faible précision).
Donc, oui, il est logique de donner les deux nombres [1], et je l'ai souvent vu faire dans des publications. Il existe également une troisième option:
[1] Présenter des statistiques sur plusieurs exécutions; si vous montrez des moyens, n'oubliez pas d'inclure également les écarts-types.
la source
Je trouve que le nombre d'itérations est une mesure trompeuse car il suggère une "vitesse" quand ce n'est pas le cas. Pour un exemple simple de comparaison de quelques préconditionneurs différents qui montre cette différence, voir ici: http://www.dealii.org/developer/doxygen/deal.II/step_6.html#Possabilitiesforextensions
la source
Dans le cas où ce n'est pas clair dans les autres réponses, quel nombre d'itérations est bon pour les arguments big-O.
Ce n'est pas bon pour la vitesse absolue, car cela dépend du temps moyen par itération, qui peut différer entre les méthodes d'un facteur important.
Par exemple, il y a une tendance à ignorer le coût de calcul des indices de tableau, et cela pourrait bien représenter une grande partie du temps CPU.
AJOUTÉ: De plus, comme je l'ai souligné ailleurs, pour chaque invocation de la méthode, il y a généralement un coût d'installation. Ensuite, si les matrices ne sont généralement pas très grandes, ce coût d'installation peut lui-même représenter une grande partie du temps CPU (de sorte que sa suppression ferait une grande différence de vitesse).
la source