Y a-t-il une différence sur l'efficacité du programme entre merci p> x <= 10 code> et x <11 code>? Y a-t-il d'autres différences? P>
8 Réponses :
Aucune différence pour le programme, je pense que c'est un goût plus personnel. P>
Il ne devrait y avoir aucune différence du tout. Même nombre de chèques est effectué p>
Référez-vous http://fr.wikipedia.org/wiki/java_bytecode_instrucance_listings
Par exemple, pour x <= 10 code>, if_icmple code> instruction sera utilisé et pour x <11 code>, if_icmplt code> instruction sera utilisé. Les deux devraient avoir la même efficacité. P>
Bonne référence, mais les codes d'octets utilisés dépendront du compilateur (peut être if_icmpgt et if_icmpge).
Bytecode n'est pas pertinent en référence à la performance. C'est le code évoqué qui compte, et cela pourrait être n'importe quoi.
Les deux sont identiques en termes d'efficacité, son choix personnel fort>.
Si vous vérifiez l'octet code fort> de la classe générée des deux a la même complexité Strong> c'est-à-dire pour les cas comme le (supposons que la vérification présente dans une boucle de boucle) a été exécuté le même nombre de fois, donc ils ont la même complexité, donc il n'effectue pas dans la complexité d'un programme fort >. p>
Je n'ai pas le code octet en ce moment. Vous pouvez vous référer en.wikipedia.org/wiki/java_bytecode_instrucance_listings . Et merci d'avoir montré d'intérêt sur le code d'octets :-)
Il n'y a pas de différence pour mais pour le double, il y a une différence énorme: p>
Cela dépend de ce que vous faites. Par exemple, voir ci-dessous.
la boucle où sortie: p> i <= 10 code> exécute 101 code> temps tandis que i code> exécute 111 code> fois. p>
Je soupçonne que le Downvoter supposumé OP parlait d'entiers et je cherche simplement des différences de performance (non des différences fonctionnelles) (comme la plupart d'entre nous l'ont fait) (mais cela n'a pas été explicitement déclaré cependant).
Cela dépend du type de x. En cas d'entier, il n'y aura aucune différence. Si c'est un float code> ou un double code>, il existe une différence définie entre les deux. P>
J'ai testé un peu, voici le code:
public static void main(String[] args) throws InterruptedException, IOException {
boolean b;
Date d = new Date();
for (long i = 0; i < 10000000001L; i++) {
b = i < 1000001L;
}
System.out.println("< " + ((new Date()).getTime() - d.getTime()) + " ms");
d = new Date();
for (long i = 0; i <= 10000000000L; i++) {
b = i <= 1000000L;
}
System.out.println("<= " + ((new Date()).getTime() - d.getTime()) + " ms");
}
j'en doute. Nous allons entrer dans des différences de secondes probablement des secondes
Les deux sont identiques en termes d'efficacité.
Pas assez de différence pour s'inquiéter, choisissez celui qui montre le plus clairement ce que vous vérifiez. par exemple. Pour une boucle de collection, préférez
x sur x <= longueur-1 code>.Quels sont les résultats de vos tests des deux options? Si les efforts de tester les deux dépassent votre intérêt dans la matière et que votre question suggère que cela ne vaut donc pas la peine de vous déranger avec une différence de performance possible. Choisissez quelle que soit la meilleure expression exprime vos idées et accumulez des questions de programmation plus intéressantes.
S'il y avait une différence (il n'y a pas), vous pouvez compter sur le compilateur pour remplacer X <= 10 par X <11 pour vous où il ne modifie pas le programme.
C'est un exemple clair d'optimisation qui a mal tourné.
Quelqu'un descendit chaque réponse sauf le premier ... bizarre ...