echo 'A: ', $a, ' B: ', $b, ' C: ', $c;
будет самым быстрым, потому что здесь все части строки непосредственно копируются в выходной поток, тогда как другие варианты будут включать в себя первую конкатенацию частей строки. «Конкатенация» означает, что для каждой части строки должен быть выделен новый фрагмент памяти и в него скопирована предыдущая строка.
Я проиллюстрирую это на следующем примере
echo 'Hallo', ' ', 'World', '!', "\n", 'How are you?';
// vs.
echo 'Hallo' . ' ' . 'World' . '!' . "\n" . 'How are you?';
Первый копирует 5 байтов + 1 байт + 5 байт + 1 байт + 1 байт + 12 байт в выходной поток, таким образом копируя 25 байт.
Второй создает строку с 5 байтами, затем создает строку с 6 байтами и копирует в нее 5 + 1 байт, затем создает строку с 11 байтами и копирует в нее 6 + 5 байтов, затем создает строку с 12 байт и копирует в него 11 + 1 байт, затем создает строку с 13 байтами и копирует в нее 12 + 1 байт, затем создает строку с 25 байтами и копирует в нее 13 + 12 байт, а затем в конечном итоге копирует эти 25 байт. байты в выходной буфер. Это будет скопировано на 92 байта и будет выделено больше памяти.
Но на самом деле, ты не должен заботиться об этом. Я очень сомневаюсь, что узким местом вашего приложения будет echo
производительность;)
Но все же есть причина, по которой я использую echo с запятыми вместо операторов конкатенации: запятая имеет наименьший из всех операторных приоритетов . Таким образом, вам никогда не придется писать круглые скобки.
Например, это будет работать:
echo 'The script executed in ', microtime(true) - $startTime, ' seconds';
Принимая во внимание, что это не будет работать должным образом (и я думаю, что это неопределенное поведение):
echo 'The script executed in ' . microtime(true) - $startTime . ' seconds';