Apa yang beda dari tulisan Hello World di atas?
iya, kedua tulisan itu diapit oleh tanda yang berbeda. Yang pertama menggunakan ‘single quote’ sedangkan yang kedua memakai “double quote”. Lalu kenapa?
Nah kali ini kita sedang berbicara soal pemrograman PHP. Di PHP, tanda ‘single quote’ dan “double quote” bisa digunakan untuk menulis string. Seperti ini:
$str1 = 'Hello World';
$str2 = "Hello World";
Selain dua cara tadi, ada juga dua cara menulis string yang lain, yaitu dengan sintaks HEREDOC dan NOWDOC.
// HEREDOC
$str3 = <<
Hello World
EOT;
// NOWDOC
$str4 = <<<'EOT'
Hello World
EOT;
Memang hasil dari keempat baris tersebut akan sama. Namun sebenarnya ada perbedaan karakteristik yang mendasar (kalau ga ada bedanya buat apa dibikin banyak macem kan?). Misalnya antara petik satu dan petik dua, pada petik dua, PHP akan melakukan interpretasi lebih lanjut seperti escape character dan variable, sedangkan petik satu tidak. Selengkapnya mengenai perbedaan tersebut bisa dibaca di dokumentasi php.net mengenai string[1].
Oleh sebab itu, meskipun hasilnya sama, namun waktu pemrosesannya bisa berbeda.
Karena penasaran, terjadilah eksperimen berikut.
Mari kita coba melakukan 1000x assignment tulisan “Hello World” ke variabel.
start = GET timestamp
FOR 1000x
str = 'Hello World'
ENDFOR
end = GET timestamp
singlequote_time = end - start
Agar hasilnya lebih terpercaya, kita lakukan 1000x pengujian. Dan hasilnya… *jeng jeng jeng*
Results for 1000x assigning "Hello World": 1000x tests taken. Single Quote: - Max = 0.0045969486236572 - Min = 0.00067710876464844 - Avg = 0.00089865803718567 Double Quote: - Max = 0.0036039352416992 - Min = 0.00067782402038574 - Avg = 0.0008852322101593 Heredoc Syntax: - Max = 0.0081748962402344 - Min = 0.0006868839263916 - Avg = 0.00091296410560608 Nowdoc Syntax: - Max = 0.0056388378143311 - Min = 0.00068092346191406 - Avg = 0.00089625239372253
Ternyata tidak banyak perbedaan, hanya sekitar 0.002406 – 0.027732 ms saja.
Sekarang kita coba tes dengan memanfaatkan fitur masing-masing cara, melakukan assignment “Hello World” + $str, dimana $str = ” Cup 2010″
// SINGLE QUOTES
$str1 = 'Hello World' . $str;
// DOUBLE QUOTES
$str2 = "Hello World $str";
// HEREDOC
$str3 = <<<EOT
Hello World $str
EOT;
// NOWDOC tidak dapat diaplikasikan
Dan hasilnya…
Results for 1000x assigning "Hello World" + $str: $str = " Cup 2010"; 1000x tests taken. Single Quote: - Max = 0.011114120483398 - Min = 0.00073599815368652 - Avg = 0.00098591780662537 Double Quote: - Max = 0.012242078781128 - Min = 0.00095701217651367 - Avg = 0.0013443555831909 Heredoc Syntax: - Max = 0.01262903213501 - Min = 0.00095701217651367 - Avg = 0.0013397529125214 Nowdoc Syntax: - Not Applicable
Ternyata perbedaannya mencapai 0.358438 ms! Penggunaan petik satu 1.36 kali lebih cepat daripada petik dua. Walaupun angka perbedaannya kecil, tapi lumayan juga kan untuk performa server?
Beberapa hasil diskusi menyarankan pemakaian petik satu untuk kebutuhan string biasa. Pilihan Anda?
1 PHP: Strings – Manual
http://www.php.net/manual/en/language.types.string.php
2 Singleversus double quote marks string delimiters – PHP answers
http://bytes.com/topic/php/answers/3954-single-versus-double-quote-marks-string-delimiters