重复调用以下函数是否存在显着的开销(CPU,内存和/或IO):
public function getUuid()
{
return `uuidgen -r`; # -r = version 4
}
使用all PHP implementation of generating a UUID(v4)?如果重要,则项目正在使用Apache (Prefork MPM) 2.2.22
和PHP 5.3.10
(使用APC
)。
我最初的感觉是,在C库中而不是在PHP中生成UUID的好处不仅仅是弥补系统调用开销。另外,uuidgen
作为util-linux
包的一部分,我本来相信它比PHP库更能正确生成UUID,但我渴望得到一些额外的输入。
答案 0 :(得分:1)
我建议您分析问题所在。 shell_exec()
PHP函数也会生成一个shell,所以它可能不像你想象的那么便宜。但是你提到的PHP类似乎也调用了子进程。我做了一些测试(在OS X上)并且可以在大约一分钟内使用PHP类生成10.000个UUID,而使用shell_exec('uuidgen')
则生成40秒。
除了ifconfig
之外,PHP类似乎也会调用shell_exec()
,因此这可能是稍微增加开销的原因。
此外,结果可能会因您选择的哈希算法而异。