Dans la mise en œuvre d'une bibliothèque à haute performance, j'ai vu le code suivant
double meanQ=0;
int counter=0;
for(...){
//some cycle with many iterations where meanQ and counter are incremented
}
meanQ /= (double)counter + 0.001D;
La dernière ligne me semble confuse. Je ferais simplement
if(counter>0)
meanQ /= counter;
Quand counter
es 0
entonces meanQ
est également 0
sinon il est divisé par counter
. Il est également (légèrement) plus précis en tant que moyenne, il n'y a pas de moulages, il est plus simple à comprendre. A priori, le if
et la somme devrait avoir une performance similaire, mais je ne peux pas tester cela sur ma machine pour le moment.
Y a-t-il une différence entre les deux approches ? La version actuelle de la bibliothèque est-elle plus performante ou y a-t-il d'autres raisons de la préférer à ma proposition ?