Производительный код

LH
На сайте с 26.09.2013
Offline
89
485

Здравствуйте!

Из двух примеров какой код выполнится быстрее?

<?php foreach( $a as $b) : ?>

<div>
<?= $b; ?>
</div>
<?php endforeach; ?>

<?php foreach( $a as $b) {

echo '<div>' . $b . '</div>';
}
?>
Master812
На сайте с 23.12.2007
Offline
168
#1

Забацать оба варианта по-очереди в цикл с 10.000 повторениями и посмотреть какой быстрее выполнится.

raspberry pi сайт ( https://4raspberrypi.ru/ ) и orange pi сайт ( https://orangepi.su/ ) и новостной движок ( https://generalscript.ru/ )
andrey90
На сайте с 02.06.2011
Offline
124
#2

Вы считаете доли секунд? Или хотите выполнять одновременно миллионы таких конструкций?

На нормальном сервере, что первый, что второй вариант пройдет почти с одинаковой скоростью.

А так, Master812 вполне себе дал годный вариант для проверки.

https://goo.gl/tJuFX - Заработай на продаже авиабилетов 1 000 000 $ уже сегодня https://goo.gl/y6tpS - Кредиты WebMoney с задолженностью WMC
tommy-gung
На сайте с 22.11.2006
Offline
304
#3

в первом варианте на 3 байта на итерацию больше. только это не тот случай, где нужно их считать

Здесь не могла быть ваша реклама
Maximus_XXX
На сайте с 07.10.2013
Offline
41
#4

Leonid H, разницы почти не будет, или будет но очень не значительная.

Быстрый, недорогой и надёжный хостинг VPS (http://goo.gl/MwGPO7) - от 5$/мес. Так же, специально для Вас, купон на скидку 25% за первый платеж: JMLUfAJD1s
Gerga
На сайте с 02.08.2015
Offline
94
#5

Leonid H, это будет быстрее :)


foreach( $a as $b ) {
echo '<div>', $b ,'</div>';
}



---------- Добавлено 30.08.2016 в 01:41 ----------

или так


foreach ( $a as $b ) {
$o .= '<div>'.$o.'</div>';
}
echo $o;
PA
На сайте с 12.02.2016
Offline
24
#6
Gerga:


foreach ( $a as $b ) {
$o .= '<div>'.$o.'</div>';
}
echo $o;

тогда уж


$o = "";
foreach ( $a as $b ) {
$o .= "<div>$b</div>";
}
echo $o;

Частный случай, именно для этого примера:


echo "<div>".join("</div><div>", $a)."</div>";
. . .
Gerga
На сайте с 02.08.2015
Offline
94
#7
ps axf:
echo*"<div>".join("</div><div>",*$a)."</div>";*

Если с join, то так:


echo '<div>', join('</div><div>', $mas), '</div>';

Но с перебором быстрее:


$s = '';
$x = sizeOf($a);
for ( $i = 0; $i < $x; ++$i ) {
$s .= '<div>'. $a[$i] .'</div>';
}
echo $s;
VHS
На сайте с 28.09.2007
Offline
142
VHS
#8

Вставлю 5 копеек: вообще не тот вариант, где нужно считать. В коде будет гораздо больше моментов, на которых можно будет соптимизировать время выполнения. Т.к. вопрос в принципе холиварный, предлагаю ТС почитать https://habrahabr.ru/post/112474/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий