Существуют ли значительные накладные расходы (процессор, память и / или ввод-вывод) при повторных вызовах следующей функции:
public function getUuid()
{
return `uuidgen -r`; # -r = version 4
}
По сравнению с использованием вся PHP-реализация генерации UUID (V4)? Если это имеет значение, то проект использует Apache (Prefork MPM) 2.2.22
а также PHP 5.3.10
(с APC
).
По моему первоначальному мнению, выгода генерации UUID в библиотеке C, а не в PHP, более чем компенсирует накладные расходы на системные вызовы. Дополнительно с uuidgen
быть частью util-linux
Пакет Я по своей природе доверял бы ему больше, чем библиотеке PHP, чтобы правильно генерировать UUID, но мне бы хотелось получить дополнительный вклад.
Я бы посоветовал вам профилировать проблему. shell_exec()
Функция PHP также порождает оболочку, поэтому она может оказаться не такой дешевой, как вы думаете. Однако упомянутый вами PHP-класс также вызывает подпроцессы. Я провел несколько тестов (на OS X) и мог генерировать 10.000 UUID с классом PHP примерно за минуту, а не 40 секунд с shell_exec('uuidgen')
,
Класс PHP также, кажется, вызывает ifconfig
в дополнение к shell_exec()
, так что это может быть причиной немного больших накладных расходов.
Также результаты могут отличаться в зависимости от выбранного вами алгоритма хеширования.
Других решений пока нет …