2010-12-16 17 views
5

Kodlama yaparken kendime şu soruyu sordum:Daha hızlı ne var? eğer() geri dönün; VEYA eğer() geri dönerse; dönüş;

Bu daha hızlı mı:

if(false) return true; 
else return false; 

Bundan daha mı?

if(false) return true; 
return false; 

Tabi ki bir fark varsa bu çok saçma, ama merak edene kadar merakım gitmeyecek: D

+1

köküdür? Ve sizce bu neden önemli bir performans darboğazıdır? : | BTW, her ikisi de okunabilirlikten yoksun. – mario

+2

Bunu ölçün. Uygun bir hızlandırıcı/derleyici, her ikisini de 'false' döndürmek için optimize eder. – erenon

+3

İkincisi daha az jeton kullandığı için daha hızlı olacaktır (T_ELSE yoktur). Ama en iyi ihtimalle mikrosaniyeler konuşuyorsunuz. Bu bir mikro optimizasyonun tanımıdır. Endişelenmeyin ve en semantik anlamdaki kodu yazınız ... – ircmaxell

cevap

15

Sadece D:

return !false; 

Yani gerçek hayatta örnek

return !$this->isSth(); 

// Not 

if ($this->isSth) { 
    return false; 
} else { 
    return true; 
} 

Performans burada önemli değildir - her çözüm son derece hızlıdır, optimizasyonu için gerek yoktur. Donald Knuth sözlerini hatırlayın:

Erken optimizasyonu Xdebug denedin mi tüm kötü

+4

Prematüre optimizasyon tüm kötülüklerin köküdür - DonaldKnuth./Büyükleri doğru şekilde alıntılayın:) – erenon

+0

Kimseye alıntı yapmak istemedim. Her neyse ... sabit. – Crozin

+0

Bu, düşündüğüm en düşük performans farkları için daha iyi anlaşılabilir bir koda sahip olmaktır. Teşekkürler! – Pioul