[]

if-else'lerin sırası

if(birinci koşul)
{
...
}
else if(ikinci koşul)
{
...
}
else if(üçüncü koşul)
{
...
}
.
.
.

burada birinci ve ikinci koşulun gerçekleşme ihtimali milyonda birse, üçüncü koşulun gerçekleşme ihtimali çok daha yüksekse üçüncü koşulu en başa getirmek optimizasyon konusunda faydalı olur mu? yoksa performans kazancı önemsenmeyecek kadar düşük mü olur?

 
kaç kez kontrol edileceği de önemlidir. yani 100 kez dönmesinde performans farkı önemsenmeyebilir ama 10000000 kez dönecekse performans fark edebilir


  • kisa  (06.12.17 13:54:13) 
1969da aya çıkan modüldeki bilgisayarda kullanmayacaksanız (ki bildiğim kadarıyla 64 kb işlemci hızı olan bir bilgisayarmış) günümüzdeki hiçbir Driver da sorun yaşayacağınızı zannetmiyorum.


  • tahtelbahir  (06.12.17 14:08:01) 
Döngü 1.000.000.000 döndüğünde, birinci koşul ile üçüncü koşul arasındaki yürütme zamanı farkı sadece 0.2 saniye oldu. Zaten günümüzde kullanılan işlemciler dallanma öngörüsünü başarılı şekilde tahmin etmeye başladı. Ama yinede işlemcinin ve derleyicinin işini kolaylaştırmak adına en çok gerçekleşen koşulu, birinci koşula yazmak daha mantıklı.


  • lastdragonborn  (06.12.17 14:22:24) 
if/else performans açısından en kötü karşılaştırma/seçim methodudur. switch/case benzeri algoritma kullanıp en çok ihtimalli seçeneği default'a almak en doğrusu. if/else'te karşılaştırma sırasını siz belirlersiniz, switch/case'de ise derleyiciye bırakırsınız.

ancak if/else kullanmak zorunlu ise en çok ihtimali ilk koşula koymak performans açısından daha iyi sonuç verir. if/else'te kodda önce ilk koşul denenecek, olmadı 2., 3. diye gidecektir. olumlu koşul sağlandığında kod bloğunu sonlandıracaktır. dolayısı ile ihtimali en yüksek koşulu ilk sıraya koymak en doğrusudur.

elbetteki az sayıdaki kontrolde fark edilmeyecek seviyededir, ama rutinin çağrılma sayısı arttıkça performans farkedecektir. tabii ki günümüz pc dünyasında hız açısından çok anlamlı olmayabilir oyun vb. programlamıyorsanız.

www.blackwasp.co.uk
  • altinci nesil caylak  (06.12.17 14:27:58) 
Yukarda dendiği gibi kodun ne kadar kullanıldığına bakar. Günümüzde işlemci güçleri standart yazılımlar için o kadar fazla ki bu tarz kayıpları umursamıyoruz. Ama eliniz değmişken yapın bari.


  • cleric  (06.12.17 14:33:22) 
koşulların test edilme şartları aynı ise,
gerçekleşme ihtimali yüksek olan öne getirilmelidir.
performans kazancı önemsiz bile olsa,
kod incelenirken veya debug edilirken kolaylık olur.
  • herhaltibiliyoring  (06.12.17 16:15:50) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.