бенчмаркинг — PHP implode () против sprintf () против concat

Что быстрее использовать при генерации строк? implode(), sprintf() или регулярное объединение переменных?

Почему ты спрашиваешь? Возможно, вам не заинтриговано, чтобы проверить такую ​​маленькую деталь о генерации строк, так как кому все равно, Миз право ? На самом деле, нет! Не тогда, когда вам нужно генерировать тонны строк из заданных переменных, когда самые маленькие 0.00xms будет иметь значение. В моем случае это генерировало ключи кеша из заданного префикса, типа контента и идентификатора.

-6

Решение

Так что я сделал это на очень простом, минималистичном наборе данных.

Вот результаты и код:

Результаты

  • комментарии: статья: 123456 взорвалась: 0,00011706352233887
  • комментарии: статья: 123456 sprintf занимает: 2.4080276489258E-5
  • комментарии: статья: 123456 Конкат взял: 6.9141387939453E-6
  • Concat самый быстрый!

Код

function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}// vars

$id = 123456;
$type = 'article';
$prefix = 'comments';$implode_time_start = microtime_float();

echo implode(':', array($prefix, $type, $id));

echo "\n";

$implode_time_end = microtime_float();
$implode_time = $implode_time_end - $implode_time_start;

echo "implode took: $implode_time";

echo "-----\n\n\n";$sprintf_time_start = microtime_float();

echo sprintf('%s:%s:%s', $prefix, $type, $id);

echo "\n";

$sprintf_time_end = microtime_float();
$sprintf_time = $sprintf_time_end - $sprintf_time_start;

echo "sprintf took: $sprintf_time";

echo "-----\n\n\n";$concat_time_start = microtime_float();

echo $prefix.':'.$type.':'.$id;

echo "\n";

$concat_time_end = microtime_float();
$concat_time = $concat_time_end - $concat_time_start;

echo "concat took: $concat_time";

echo "------\n\n\n";if ($implode_time < $sprintf_time || $implode_time < $concat_time) {
echo "implode is fastest!";
} elseif ($concat_time < $sprintf_time) {
echo "concat is fastest!";
} else {
echo "sprintf is fastest!";
}

Пожалуйста, поделитесь своими мыслями!

-8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]