Bununla ilgili Türkiye PHP Grubu'nun sitesinde rastladığım bir makaleyi paylaşıyorum...)
İlk uygulamalarımızı geliştirdikten bir süre sonra clean code ve hızlı çalışan scriptler yazamamış
olmaktan endişe ederiz. Bu yazıda hızlı çalışan scriptler için bazı öneriler bulacaksınız.
Öncelikle belirtmeliyim ki, PHP scriptlerinin hızlı çalışması için yapacağınız düzenlemeler çoğu
kez kayda değmeyecek iyileştirmeler sağlar. Ama yine de kod yazma alışkanlıklarımızı geliştirmek
fayda sağlayacaktır.
YAZDIRMA KOMUTLARI
İlk olarak bilmemiz gereken şey, PHP'de tek tırnak işaretlerinin string yani metin, çift tırnak
işaretlerinin değişken içeren metin ve hiç tırnak kullanmamanın da yazı fonksiyonlarında değişken,
değişkenlerde ise sayılar için kullanıldığıdır. Ayrıca işlemlerde öncelik belirleme durumları
dışında parantezlerin öneminin olmadığını da unutmamalıyız. Örnekler:
<?php $foo='bu bir metindir'; $bar='Ahmet'; $foo="Merhaba, $bar"; //Merhaba, Ahmet $foo='Merhaba, $bar'; //Merhaba, $bar $foo=10; ?>Eğer çift tırnak kullanırsanız PHP burada bir değişkeni dahil etmeye hazırdır. Oysa ki tek tırnak
kullanırsanız, değişken okumak gibi bir durum söz konusu değildir. Dolayısı ile daha hızlıdır.
Yani;
echo 'bu bir metindir'; //daha hızlı echo "bu bir metindir"; //daha yavaşBunun yanında bir değişkene çift tırnak içinde yer vermek yerine . ile eklemek de daha hızlıdır.
Yani;
$bar='Ahmet'; echo $bar.', Merhaba'; //daha hızlı echo "$bar, Merhaba"; //daha yavaşGereksiz yere echo veya print fonksiyonlarını kullanmak performans kaybına neden olur. Örnek;
echo "Merhaba"; echo "$bar"; //daha yavaş echo 'merhaba'.$bar; //daha hızlıEğer yazdırılacak metin parça parça eklenecek ise, bunu önce bir değişkene eklemek sonra yazdırmak
daha hızlıdır. Ancak tüm yazım işlerini böyle yaparsanız çok fazla değişken kullanarak hafızaya
yüklenmiş olursunuz. Örnek;
$metin='Merhaba'; $metin.=$bar; echo "$metin"; //yavaş echo $metin; //en hızlısıBir diğer konu da echo veya print fonksiyonlarının kullanımıdır. Prensip olarak echo ile
yapabileceğiniz işi diğerleri ile yapmayınız. Çünkü echo sadece yazdırma işini yaparken print
yazdırma işinin ardından true veya false olarak bir değer döndürür. Çoğu kez buna ihtiyacımız
yoktur. printf veya printr ise gerekmedikçe kullanılmamalıdır.
SORGULAR
Veritabanı sorgularında performans açısından mümkün olduğunca çok işi SQL sorgusunda yapmak ve
sorgu sayısını en az seviyede tutmak prensip olmalıdır. Yani veritabanından her hangi bir sınırlama
yapmadan bilgi çekip sonra PHP ile if else operatörleri ile veriyi filtrelemek performans açısından
olumsuzdur.
PHP PARSER
PHP parser HTML kodlarını kontrol etmez, dosyaya eklenen fonksiyon veya class ların kullanılsın
veya kullanılmasın tümünü kontrol eder. Parser ve compilerın servis hızına göre
HTML veya PHP olmayan kodlar //kontrol yok en hızlı
Dosya içindeki PHP kodları //daha yavaş
Fonksiyon ve sınıflar //daha da yavaş
Include veya Require //en yavaş
şeklinde işlenir. Buna göre;
# Sık ve farklı dosyalardan çağrılmayacak kodlar için fonksiyon kullanmak
# Kod yoğunluğundan dolayı bakım ve güncelleme zorluğu olmayan dosyalarda class kullanmak
# Fonkisyonları çok sayıda harici dosyada tutup bunları sayfaya (çok sayıda) include etmek
# HTML kodlarını PHP kodu içinde yazmak
performans kaybına neden olur.