Uzun versiyon...
Bir iş arkadaşı , daha hızlı while (1)
olan bir Perl betiğindeki kullanımımı gördükten sonra bugün iddia etti for (;;)
. Tercümanın herhangi bir farkı optimize etmesi umuduyla aynı olmaları gerektiğini savundum. Döngü yinelemeleri için 1.000.000.000 çalıştıracak ve aynı sayıda döngüler çalıştıracak ve arasındaki süreyi kaydedecek bir komut dosyası ayarladım. Kayda değer bir fark bulamadım. İş arkadaşım bir profesörün ona while (1)
bir karşılaştırma yaptığını 1 == 1
ve for (;;)
olmadığını söylediğini söyledi . Aynı testi C ++ ile 100x yineleme sayısıyla tekrarladık ve fark ihmal edilebilir düzeydeydi. Bununla birlikte, bir derleme koduna karşı derlenmiş kodun ne kadar hızlı olabileceğinin grafik bir örneğiydi.
Kısa versiyon...
Eğer kaçmak için sonsuz bir döngüye ihtiyacınız varsa bir while (1)
fazla tercih etmek için herhangi bir neden var mı for (;;)
?
Not: Sorudan net değilse. Bu, birkaç arkadaş arasında tamamen eğlenceli bir akademik tartışma oldu. Bunun, tüm programcıların acı çekmesi gereken çok önemli bir kavram olmadığının farkındayım. Tüm bu harika cevaplar için teşekkürler (ve eminim diğerleri) bu tartışmadan birkaç şey öğrendim.
Güncelleme: Sözü edilen iş arkadaşı aşağıda bir yanıtla tartıldı.
Gömülmesi durumunda burada alıntılanmıştır.
Bir AMD montaj programcısından geldi. C programcılarının (insanlar) kodlarının verimsiz olduğunu anlamadıklarını belirtti. Ancak bugün, gcc derleyicilerinin çok iyi olduğunu ve onun gibi insanları işten çıkardığını söyledi. Örneğin dedi ve bana
while 1
vs hakkında söyledifor(;;)
. Şimdi alışkanlık dışında kullanıyorum ama gcc ve özellikle tercümanlar optimize edildiğinden, her iki gün için de aynı işlemi (işlemci atlama) yapacaklar.