Прочитал тут недавно у одного адепта, что не имеет смысла оптмизировать строки и писать в ординарных кавычках, что лучше строить боинги
которые видимо развалятся не взелетев с таким подходом
ПОХАПЕ сам по себе гавноязык, который нужно оптимизровать везде насколько можно, если нужна максимальаня производительность, что особо сказывается на крупных проектах. Слово крупный тут не значит использование всевозможных фреймворков и больших денег за работу, слово крупный тут имеет смысл большой нагрузки, где каждый выигранный % производительности на счету.
Не поленился написать нубоскрипт, вот результаты:
# vars time with " time with ' performance 1 3.6974380016327 2.5139710903168 147.08% 2 6.0501251220703 5.0527441501617 119.74% 3 8.2543439865112 7.8380331993103 105.31% 4 10.672549962997 10.420034885406 102.42% total 28.674457073212 25.824783325195 111.03%
Отсюда видно, что максимальный отрыв наблюдается при подстановке 1ой переменной
и даже при падении скорости при подстановке 4х переменных, общая производительность выше. Поэтому не ленитесь и пишите все строки сразу с 1ой кавычкой, тем более если нужно подставить всего 1ну переменную.
Сорцы:
<?php
$var = 'lolo';
$var2 = 'test';
$var3 = 'preved';
$var4 = 'kagdila';
$time1 = $time2 = array();
//bench
$lol = '';
$start = microtime(true);
for($i=0; $i<10000000; $i++)
$lol = "bugaga nah suko bugaga nah suko bugaga nah suko bugaga nah suko $var";
$time1[] = microtime(true) - $start;
$lol = '';
$start = microtime(true);
for($i=0; $i<10000000; $i++)
$lol = 'bugaga nah suko bugaga nah suko bugaga nah suko bugaga nah suko '.$var;
$time2[] = microtime(true) - $start;
$lol = '';
$start = microtime(true);
for($i=0; $i<10000000; $i++)
$lol = "bugaga nah suko bugaga nah suko bugaga nah suko bugaga $var3 nah suko $var";
$time1[] = microtime(true) - $start;
$lol = '';
$start = microtime(true);
for($i=0; $i<10000000; $i++)
$lol = 'bugaga nah suko bugaga nah suko bugaga nah suko bugaga '.$var3.' nah suko '.$var;
$time2[] = microtime(true) - $start;
$lol = '';
$start = microtime(true);
for($i=0; $i<10000000; $i++)
$lol = "bugaga nah suko $var2 bugaga nah suko bugaga nah suko bugaga $var3 nah suko $var";
$time1[] = microtime(true) - $start;
$lol = '';
$start = microtime(true);
for($i=0; $i<10000000; $i++)
$lol = 'bugaga nah suko '.$var2.' bugaga nah suko bugaga nah suko bugaga '.$var3.' nah suko '.$var;
$time2[] = microtime(true) - $start;
$lol = '';
$start = microtime(true);
for($i=0; $i<10000000; $i++)
$lol = "bugaga nah suko $var2 bugaga nah suko bugaga $var4 nah suko bugaga $var3 nah suko $var";
$time1[] = microtime(true) - $start;
$lol = '';
$start = microtime(true);
for($i=0; $i<10000000; $i++)
$lol = 'bugaga nah suko '.$var2.' bugaga nah suko bugaga '.$var4.' nah suko bugaga '.$var3.' nah suko '.$var;
$time2[] = microtime(true) - $start;
//output
$format = 'A10A18A18A12';
print pack($format, '# vars', 'time with "', 'time with \'', 'performance')."\n";
foreach($time1 as $k=>$v) {
print pack($format, $k+1, $time1[$k], $time2[$k], round($time1[$k]*100/$time2[$k], 2).'%')."\n";
}
print pack($format, 'total', array_sum($time1), array_sum($time2), round(array_sum($time1)*100/array_sum($time2), 2).'%')."\n";
?>
No related posts.
February 4th, 2008 at 5:52 am
А теперь покажи реальное приложение, где ты 10000000 раз подставляешь одну переменную в строку
В реальном приложении у тебя будет разница одна милисекунда против двух.
February 4th, 2008 at 8:53 am
1 - запись в файл 15-30м+ строк (с консоли)
2 - генерация XML
1м лупов взято просто для чистоты экспериментов, допустим это 1м трафа в сутки, даже +1-5% прироста это 10-50к трафа выигрыша
суть не в том что из-за ординарных кавычек приложение станет работать в 2 раза быстрей, нет
суть в том, что выигрышь в скорости есть, и для него не надо сидеть час и “перефигачивать” строки) просто писать сразу с ‘ ‘
шифт будет целей и больше трафа залезет..
и может быть тут есть такой фактор “для себя” или “на дядю”
во втором варианте ессесно может быть лень конкатенанировать везде 
May 31st, 2008 at 11:07 pm
# vars time with " time with ‘ performance
1 31.1688570976 4.92955899239 632.28%
2 34.4501850605 8.44521808624 407.93%
3 37.4188489914 12.6438271999 295.95%
4 40.6829819679 15.9264369011 255.44%
total 143.720873117 41.9450411797 342.64%