2014-12-01 125 views
2

是否有顯著的開銷進行重複調用以下功能(CPU,內存和/或IO):在PHP中生成UUID的最有效方法是什麼?

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

對戰使用all PHP implementation of generating a UUID(V4)?如果重要,該項目使用Apache (Prefork MPM) 2.2.22PHP 5.3.10(與APC)。

我最初的感覺是,在C庫而不是PHP中生成UUID的好處將大大彌補系統調用開銷。此外,uuidgenutil-linux包的一部分,我會本質上相信它不僅僅是一個PHP庫來正確生成UUID,但我渴望得到一些額外的輸入。

+0

難道你不能使用:http://php.net/manual/en/function.uniqid.php – 2014-12-01 22:17:37

+0

@dagon我們正在與一些非PHP系統進行整合,因此能夠在不同的平臺上生成相同風格的標識符所有系統都很重要。 – InvertedAcceleration 2014-12-02 00:49:09

+2

我想知道關閉這個人的人在想什麼。這顯然是一個編程問題,它將成爲超級用戶的主題。 – ofrommel 2014-12-02 07:08:42

回答

1

我建議你分析問題。 shell_exec() PHP函數也生成一個shell,所以它可能不像您想象的那麼便宜。但是,您提到的PHP類似乎也稱爲子進程。我做了一些測試(在OS X上),並且可以在大約一分鐘內生成10.000 UUID與PHP類,而在shell_exec('uuidgen')與40秒相反。

除了shell_exec()之外,PHP類似乎還稱爲ifconfig,所以這可能是造成稍微更大開銷的原因。

此外,結果可能會因您選擇的散列算法而異。

相關問題