[]
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?
{
...
}
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
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.
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