Что быстрее использовать при генерации строк? implode()
, sprintf()
или регулярное объединение переменных?
Почему ты спрашиваешь? Возможно, вам не заинтриговано, чтобы проверить такую маленькую деталь о генерации строк, так как кому все равно, Миз право ? На самом деле, нет! Не тогда, когда вам нужно генерировать тонны строк из заданных переменных, когда самые маленькие 0.00xms будет иметь значение. В моем случае это генерировало ключи кеша из заданного префикса, типа контента и идентификатора.
Так что я сделал это на очень простом, минималистичном наборе данных.
Вот результаты и код:
Результаты
- комментарии: статья: 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!";
}
Пожалуйста, поделитесь своими мыслями!
Других решений пока нет …