SORU
12 Mayıs 2010, ÇARŞAMBA


Kadar saymak için daha aşağı saymak için daha hızlı mıdır?

Bilgisayar bilimleri öğretmenimiz bir kez nedense daha verimli kadar saymak için daha aşağı saymak olduğunu söyledi. FOR döngüsünü kullanmak gerekir ve bu döngü Endeksi bir yerde kullanılırsa örnek (ekran N * bir satır yazdırma gibi) Böyle bir kod yani

for (i = N; i >= 0; i--)  
  putchar('*');  

daha iyi

for (i = 0; i < N; i  )  
  putchar('*');  

Bu gerçekten doğru mu? Ve eğer, nedenini bilen var mı?

CEVAP
12 Mayıs 2010, ÇARŞAMBA


Bu gerçekten doğru mu? ve eğer öyleyse nedenini bilen var mı?

Eski günlerde, ne zaman bilgisayar hala yontma dışarı erimiş silis elden, 8-bit mikroişlemcileri dolaştı Dünya, ve ne zaman senin öğretmenin genç (veya öğretmen öğretmen genç), ortak bir makine talimat denirazaltma ve sıfır atlayın(DSZ). Ukala montaj programcılar bu talimat döngüler uygulamak için kullanılır. Daha sonra makine meraklısı talimatları var, ama yine de başka bir şey ile karşılaştırmak daha sıfır ile karşılaştırmak için bir şey daha ucuz olduğunu epeyce bir işlemci vardı. (Gerçek PPC veya tamamı bir kayıt rezervi olan SPARC, her zaman sıfır gibi bazı modern RISC makinelerde bile.)

Eğer döngüler sıfır yerine neler olabileceğini N ile karşılaştırmak taksam?

  • Bir kayıt kurtarabilir
  • Bir küçük ikili kodlama ile talimat karşılaştırın alabilirsiniz
  • Eğer önceki bir talimat bayrak (86 aile makineler sadece büyük olasılıkla) set olursa, hatta karşılaştırmak açık bir talimat gerekebilir

Bu farklılıklar herhangi bir neden muhtemeldirölçülebilir bir iyileşmegerçek programlarsırası modern bir işlemci? İhtimal yüksek. Aslında, hatta, bir microbenchmark üzerinde gözle görülür bir gelişme gösterebilir misin diye etkilenirdim.

Özet:Öğretmenin kafasına ben şaplak!Eski sözde gerçekler döngüler düzenlemek için nasıl hakkında öğrenme olmamalısın. Bu öğrenme olmalıdırdöngüler ile ilgili en önemli şey onlar emin olmaktırsonlandırınüretircevap doğruveokunması kolay.Öğretmenin önemli şeyler odaklanmak değil, mitoloji isterdim.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • engineerguy

    engineerguy

    10 Ocak 2010
  • Hudson Music

    Hudson Music

    13 Mart 2007
  • ThePointblank

    ThePointblan

    18 Aralık 2006