ULIDの公式リポジトリからリンクされているライブラリを見ていてもう少し高速化できそうだったので実装してみた。
リポジトリ
pg-ito/fast_ulid: implement of ULID for php
https://github.com/pg-ito/fast_ulid
使い方
次のような使い方でULIDが生成できる
$loader = require_once __DIR__.'/vendor/autoload.php';
use \PgIto\FastUlid\FastUlid;
echo FastUlid::gen().PHP_EOL;
// 01GAGJ3TPGR82PLAS7K37HNIDV
パフォーマンス
手元のWSL環境ではおおむね1IDあたり1ms(1000ns)ほどで生成できた。(ほかのライブラリの2倍くらい)
$ php bench.php
number of generated ids 1000000
elapsed 1.0562382 Sec.
1056.2382 nSec/generate
ご要望などありましたらお寄せください。