apache — Какой самый эффективный способ генерировать UUID в PHP?

Существуют ли значительные накладные расходы (процессор, память и / или ввод-вывод) при повторных вызовах следующей функции:

public function getUuid()
{
return `uuidgen -r`; # -r = version 4
}

По сравнению с использованием вся PHP-реализация генерации UUID (V4)? Если это имеет значение, то проект использует Apache (Prefork MPM) 2.2.22 а также PHP 5.3.10APC).

По моему первоначальному мнению, выгода генерации UUID в библиотеке C, а не в PHP, более чем компенсирует накладные расходы на системные вызовы. Дополнительно с uuidgen быть частью util-linux Пакет Я по своей природе доверял бы ему больше, чем библиотеке PHP, чтобы правильно генерировать UUID, но мне бы хотелось получить дополнительный вклад.

2

Решение

Я бы посоветовал вам профилировать проблему. shell_exec() Функция PHP также порождает оболочку, поэтому она может оказаться не такой дешевой, как вы думаете. Однако упомянутый вами PHP-класс также вызывает подпроцессы. Я провел несколько тестов (на OS X) и мог генерировать 10.000 UUID с классом PHP примерно за минуту, а не 40 секунд с shell_exec('uuidgen'),

Класс PHP также, кажется, вызывает ifconfig в дополнение к shell_exec(), так что это может быть причиной немного больших накладных расходов.

Также результаты могут отличаться в зависимости от выбранного вами алгоритма хеширования.

1

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

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

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