print ve echo hakkında kısaca
php.net te gezenir iken aklıma echo ile print arasında hız fark olup olmadığını test etmek geldi. Nedendir bilinmez print bana daha bir sempatik gelir ama echo kullanırdım her zaman.
Ufak bir test hazırladım ve uyguladım
[sourcecode language='php']
$echoBeganTime = microtime();
for ($i=0;$i<10000;$i++) {
echo 'Selam, ben bir yazıyım';
}
$echoEndTime = microtime();
$printBeganTime = microtime();
for ($i=0;$i<10000;$i++) {
print 'Selam, ben bir yazıyım';
}
$printEndTime = microtime();
echo "Result:\n
echo : ". ( $echoBeganTime-$echoEndTime ) ." print : ". ( $printBeganTime-$printEndTime );
[/sourcecode]
bu test 3 defa tekrarladım sonuçlar aşağıdaki gibi idi:
Result 1: echo : -0.192645
print : 0.613014
Result 2: echo : -0.117693
print : -0.250803
Result 3: echo : -0.113317
print : -0.208518
print gerçekten echo'ya göre bayağı bir yavaş çalışıyor. print üzerine biraz araştırma yaptıktan sonra. php.net'te dökümante edilmemiş bir örnek buldum. (print fonksiyonunda)
[sourcecode language='php']$b ? print "true" : print "false";[/sourcecode] normalde bu şekilde gerçekleştirmiş olduğumuz kontrollerde (yukarıda gördüğünün kod tek satırlık if else tir) php bu print fonksiyonuna izin vermemesi gerekmekte ki echo ya bu noktada izin vermiyor. Ayrıca echo(1, 2, 3); veya echo 1, 2, 3; gibi bir kullanımı destekler iken, print desteklememekte. Kaynakça: http://www.php.net/manual/en/function.echo.php http://www.php.net/manual/en/function.print.php http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
03 Eylül 2008, 23:56
Bende böyle şeylere takan biri olarak test ettim, bazılarında ilginç bi şekilde son zamanı ilk zamandan çıkarıp eksi sonuç alabildim!
Double dedim banamısın demedi.. İlginç. Neyse bu başka konu, sonuç olarak benim testlerin (negatif çıkmayanlar
sonucu birbirine çok yakın geldi. Hatta acaba bu yakınlık önce echo, sonra print olması mı dedim denedim hayır, echo daha yavaş..
Tek eklemek istediğim, PHP’nin ?: kullanımına print’de izin vermesi gerekmekte. Biraz bakındıktan sonra, print’in aynı zamanda bir return fonksiyonu olduğunu farkettim. Yani aslında “print 1;”, “print(1);”‘in aliası. Yazı output ettiğinde “true” döndürmekte (buarada PHP’de true bir boolean değil, 1 sayılıyor) Bu yüzden “?:” tanımında kullanılabiliyor. Çok küçük bir fark, ama performans farkını oluşturan da sanırım bu.
04 Eylül 2008, 07:18
Valla bende şimdi dikkat ettim
Sanırım bu sıralar gerçekten kafam dalgın.
3 kez test ettim bendeki sonuçlar:
echo : 0.119256 print : 0.284748
echo : 0.094611 print : -0.735443
echo : 0.075153 print : 0.250266
$echoBeganTime = microtime();
for ($i=0;$i<10000;$i++) {
echo 'Selam, ben bir yazıyım';
}
$echoEndTime = microtime();
$printBeganTime = microtime();
for ($i=0;$i<10000;$i++) {
print 'Selam, ben bir yazıyım';
}
$printEndTime = microtime();
echo "Result:\n
echo : ". ( $echoEndTime -$echoBeganTime) ." print : ". ( $printEndTime-$printBeganTime );