PHP en pahalı operasyonlar nelerdir? Ben @ operatörü overusing gibi şeyler pahalı olabilir biliyorum. Başka ne düşünün?
Iyi bir uygulama olduğunu, ancak alt çizgi performansı çok fark yapmaz bazı mikro-optimizasyonları:
echo 'How are you ',$name,' I am fine ',$var1
echo 'How are you '.$name.' I am fine '.$var1
daha hızlıdırAksine yavaş potansiyel alanları anlamaya çalışmak yerine, bir profil aracını kullanın. Takma xDebug Muhtemelen ben yazmak kod geliştirmek için yaptık kolay ve en iyi şeylerden biriydi. En iyi sonuçlar için WinCacheGrind (veya işletim sistemi için doğru sürüm) ile takın.
"Hello $name"
sözdizimi daha yavaştır
'Hello ' . $name
Ayrıca, __get() __set() __call()
, vb yavaş
Eğer çok bakım ve eğer, sen structures SPL optimize kullanabilirsiniz
Ben döngüler içinde SQL sorguları söyleyebilirim. Bunun gibi:
foreach ($db->query('SELECT * FROM categories') as $cat)
{
foreach ($db->query('SELECT * FROM items WHERE cat_id = ' . $cat['cat_id']) as $item)
{
}
}
Hangi kayıt için, bu gibi bir şey içine kısaltılmış olabilir:
$sql = 'SELECT c.*, i.*
FROM categoriess c
LEFT JOIN items i USING (cat_id)
ORDER BY c.cat_order';
foreach ($db->query($sql) as $row)
{
}
Kendi deneyim reel en pahalı operasyon echo
ifadedir. Deneyin ve özellikle katılır veritabanı aramaları, ardından tarayıcıya çıktılamayıp önce birlikte tüm dize katılın!
Kod da bazen sadece basitçe algoritmalar ve veri yapıları üstlenmeden bir x10 performans artışı elde edebilirsiniz. Herhangi bir programı alın ve tekrar edebilirsiniz yarım o, yarım uzunluğa deneyin?
İnsanlar bu söyleyerek oldukça web üzerinde geniş yayılır belki çünkü sadece @ pahalı olduğunu düşünüyorum.
http://www.php.net/manual/en/language.operators.errorcontrol.php#102543: aktarıyorum
If you're wondering what the performance impact of using the @ operator is, consider this example. Here, the second script (using the @ operator) takes 1.75x as long to execute...almost double the time of the first script.
So while yes, there is some overhead, per iteration, we see that the @ operator added only .005 ms per call. Not reason enough, imho, to avoid using the @ operator.
Gerçek 0m7.617s kullanıcı sistemi 0m0.792s 0m6.788s
vs
Gerçek 0m13.333s kullanıcının 0m12.437s sistemi 0m0.836s
Bunu istediğiniz bir operasyon "aşırı" bir operatör neredeyse yapamaz ve genellikle değer yapıyor eğer.