Ikisi arasındaki fark, hız / performans şartlarını int?
$sql = "SELECT * "
. "FROM `myTable` "
. "WHERE `id` = 4";
$sql = "SELECT *
FROM `myTable`
WHERE `id` = 4";
Belki çok çok very small fark, belki biraz daha yavaş olan ilk (because of concatenations) ...
... Ama tek bir basit bir SQL sorgusu çalıştırmak için alınan zaman çok küçük bir farkla daha önemli binlerce kez (maybe hundreds, with a simple query -- just a wild guess, but you'll see the point) olacak!
Yani, gerçekten "optimizasyonlar" bu tür hakkında rahatsız olmamalı, ve hem de en kolay anlamak / okumak ve korumak / ne yazmaya / seçmek düşünün.
EDIT : sadece eğlence için, burada kod ilk bölümü için oluşturulan opcodes şunlardır:
$ php -dextension=vld.so -dvld.active=1 temp-2.php
Branch analysis from position: 0
Return found
filename: /home/squale/developpement/tests/temp/temp-2.php
function name: (null)
number of ops: 6
compiled vars: !0 = $sql
line # op fetch ext return operands
-------------------------------------------------------------------------------
5 0 EXT_STMT
1 CONCAT ~0 'SELECT+%2A+', 'FROM+%60myTable%60+'
2 CONCAT ~1 ~0, 'WHERE+%60id%60+%3D+4'
3 ASSIGN !0, ~1
8 4 RETURN 1
5* ZEND_HANDLE_EXCEPTION
Ve, ikinci biri için:
$ php -dextension=vld.so -dvld.active=1 temp-2.php
Branch analysis from position: 0
Return found
filename: /home/squale/developpement/tests/temp/temp-2.php
function name: (null)
number of ops: 4
compiled vars: !0 = $sql
line # op fetch ext return operands
-------------------------------------------------------------------------------
7 0 EXT_STMT
1 ASSIGN !0, 'SELECT+%2A%0A++++++++FROM+%60myTable%60%0A++++++++WHERE+%60id%60+%3D+4'
9 2 RETURN 1
3* ZEND_HANDLE_EXCEPTION
Yani, evet, hala, ne daha önce söylediğim hala doğrudur, orada bir fark var ... Ama: optimizasyon bu tür umurumda olmamalı: Eğer diğer bölgelerinde pek çok "-optimize yok" şeyler yapacağız Başvurunuzun (or even if the configuration of your server) bu gibi küçük bir fark absolutly hiçbir şey anlamına gelir
Well, except if you are google and have thousands of servers, I guess ^^
Şeyler bu tür test etmek için, döngü sırasında büyük bir kullanmak ve karşılaştırmak için over-ve-over kodu çalıştırın. Bu iki (veya daha fazla) işlemleri karşılaştırmak etmeyin. Ona birkaç düzine kez çalıştırmak ve sonuçlarını izlemek.
ob_start();
$t = microtime(true);
while($i < 1000) {
// CODE YOU WANT TO TEST
++$i;
}
$tmp = microtime(true) - $t;
ob_end_clean();
echo $tmp