Version longue...
Un collègue a affirmé aujourd'hui, après avoir vu mon utilisation d' while (1)
dans un script Perl qui for (;;)
est plus rapide. J'ai fait valoir qu'ils devraient être la même en espérant que l'interprète d'optimiser toutes les différences. J'ai créé un script qui sera exécuté pour 1 000 000 000 d'itérations de boucle et le même nombre de boucles while et d'enregistrer le temps entre les deux. J'ai pu trouver aucune différence notable. Mon collègue a dit qu'un professeur lui avait dit que l' while (1)
était en train de faire une comparaison 1 == 1
et de la for (;;)
ne l'était pas. Nous avons répété le même test avec l'100 fois le nombre d'itérations avec le C++, et la différence était minime. C'est toutefois un exemple graphique de façon beaucoup plus rapide code compilé peut être par rapport à un langage de script.
Version courte...
Est-il une raison de préférer un while (1)
sur un for (;;)
si vous avez besoin d'une boucle infinie de sortir de la?
Remarque: Si il n'est pas clair à partir de la question. C'était purement un plaisir de débat académique entre un couple d'amis. Je suis conscient que ce n'est pas un super concept important que tous les programmeurs doivent agoniser sur. Merci pour tous les beaux réponses que j'ai (et je suis sûr que d'autres) ont appris quelques choses de cette discussion.
Mise à jour: susmentionnés co-travailleur pesé dans une réponse ci-dessous.
Cité ici dans le cas où il obtient enterré.
Il est venu à partir d'un AMD assemblée programmeur. Il a déclaré que les programmeurs C (le peuple) ne se rendent pas compte que leur code a inefficiences. Il a dit aujourd'hui, même si, de compilateurs gcc sont très bonnes, et de mettre des gens comme lui de l'entreprise. Il a dit par exemple, et m'a dit à propos de l'
while 1
vsfor(;;)
. Je l'utilise maintenant de sortir de l'habitude, mais gcc et surtout les interprètes va faire la même opération (un processeur de saut) pour ces deux jours, depuis qu'ils sont optimisés.