mougrim / fast-uuid
Requires
- php: ^8.2
- ramsey/uuid: ^4.7
Requires (Dev)
- phpbench/phpbench: ^1.3
- phpunit/phpunit: ^11.2
README
一个PHP库,用于生成和使用UUID,在某些情况下比 ramsey/uuid 更快。
mougrim/fast-uuid
是一个用于生成和使用通用唯一标识符(UUID)的PHP库。
mougrim/fast-uuid
基于源代码 ramsey/uuid 并将其作为依赖项使用,但在许多情况下速度更快。
安装
首选的安装方法是使用 Composer。运行以下命令安装包并将其添加到项目的 composer.json
作为依赖项:
composer require mougrim/fast-uuid
文档
创建工厂
use Mougrim\FastUuid\Factory\FastUuidFactoryFactory; $factory = (new FastUuidFactoryFactory())->create();
如果您想使用懒加载初始化,可以按照以下方式创建工厂:
use Mougrim\FastUuid\Factory\FastUuidFactoryFactory; $factory = (new FastUuidFactoryFactory())->createAndSetFactory(useLazy: true);
创建工厂后,您可以像使用 ramsey/uuid
一样使用它,例如,生成一个UUID v7:
$factory->uuid7();
有关更多信息,请参阅 ramsey/uuid 文档。
问题
在不使用懒加载初始化的情况下,ramsey/uuid
很慢(有时非常慢)。
要使用懒加载初始化,您必须使用默认工厂的静态方法,如 Uuid::fromString()
、Uuid::uuid7()
等。如果您使用 Uuid::getFactory()
或更改默认工厂,则无法使用懒加载初始化。
因此,如果您想使用依赖注入(DI)或非默认工厂,则不能使用 ramsey/uuid
的懒加载。
mougrim/fast-uuid
的非懒加载初始化比 ramsey/uuid
快得多。
mougrim/fast-uuid
的懒加载速度与 ramsey/uuid
相同,但在需要解包UUID(例如,从中获取时间戳)的情况下,mougrim/fast-uuid
要快得多。
基准测试
要运行基准测试,请使用以下命令:
vendor/bin/phpbench run --report=aggregate --iterations=5 --revs=5000 --retry-threshold=2
结果
+----------------------------+---------------------------------------------------------------------------------+-----+------+-----+-----------+-----------+--------+
| benchmark | subject | set | revs | its | mem_peak | mode | rstdev |
+----------------------------+---------------------------------------------------------------------------------+-----+------+-----+-----------+-----------+--------+
| UuidStringConversionBench | benchCreationOfTinyUuidFromString | | 5000 | 5 | 907.312kb | 3.740μs | ±1.04% |
| UuidStringConversionBench | benchLazyCreationOfTinyUuidFromString | | 5000 | 5 | 907.312kb | 0.222μs | ±1.18% |
| UuidStringConversionBench | benchFastCreationOfTinyUuidFromString | | 5000 | 5 | 907.312kb | 0.863μs | ±0.97% |
| UuidStringConversionBench | benchFastLazyCreationOfTinyUuidFromString | | 5000 | 5 | 907.408kb | 0.222μs | ±0.96% |
| UuidStringConversionBench | benchCreationOfHugeUuidFromString | | 5000 | 5 | 907.312kb | 1.555μs | ±1.08% |
| UuidStringConversionBench | benchLazyCreationOfHugeUuidFromString | | 5000 | 5 | 907.312kb | 0.216μs | ±0.76% |
| UuidStringConversionBench | benchFastCreationOfHugeUuidFromString | | 5000 | 5 | 907.312kb | 0.526μs | ±1.41% |
| UuidStringConversionBench | benchFastLazyCreationOfHugeUuidFromString | | 5000 | 5 | 907.408kb | 0.221μs | ±0.94% |
| UuidStringConversionBench | benchCreationOfUuidFromString | | 5000 | 5 | 907.264kb | 3.524μs | ±0.57% |
| UuidStringConversionBench | benchLazyCreationOfUuidFromString | | 5000 | 5 | 907.312kb | 0.226μs | ±1.04% |
| UuidStringConversionBench | benchFastCreationOfUuidFromString | | 5000 | 5 | 907.312kb | 0.764μs | ±0.54% |
| UuidStringConversionBench | benchFastLazyCreationOfUuidFromString | | 5000 | 5 | 907.312kb | 0.231μs | ±0.46% |
| UuidStringConversionBench | benchCreationOfPromiscuousUuidsFromString | | 5000 | 5 | 907.408kb | 359.633μs | ±1.04% |
| UuidStringConversionBench | benchLazyCreationOfPromiscuousUuidsFromString | | 5000 | 5 | 907.408kb | 22.120μs | ±0.95% |
| UuidStringConversionBench | benchFastCreationOfPromiscuousUuidsFromString | | 5000 | 5 | 907.408kb | 81.267μs | ±0.78% |
| UuidStringConversionBench | benchFastLazyCreationOfPromiscuousUuidsFromString | | 5000 | 5 | 907.408kb | 22.868μs | ±1.09% |
| UuidStringConversionBench | benchCreationOfTinyUuidFromBytes | | 5000 | 5 | 907.312kb | 2.518μs | ±0.28% |
| UuidStringConversionBench | benchLazyCreationOfTinyUuidFromBytes | | 5000 | 5 | 907.312kb | 0.555μs | ±1.43% |
| UuidStringConversionBench | benchFastCreationOfTinyUuidFromBytes | | 5000 | 5 | 907.312kb | 0.686μs | ±1.04% |
| UuidStringConversionBench | benchFastLazyCreationOfTinyUuidFromBytes | | 5000 | 5 | 907.408kb | 0.529μs | ±0.68% |
| UuidStringConversionBench | benchCreationOfHugeUuidFromBytes | | 5000 | 5 | 907.312kb | 0.619μs | ±1.12% |
| UuidStringConversionBench | benchLazyCreationOfHugeUuidFromBytes | | 5000 | 5 | 907.312kb | 0.557μs | ±1.26% |
| UuidStringConversionBench | benchFastCreationOfHugeUuidFromBytes | | 5000 | 5 | 907.312kb | 0.400μs | ±0.82% |
| UuidStringConversionBench | benchFastLazyCreationOfHugeUuidFromBytes | | 5000 | 5 | 907.408kb | 0.534μs | ±0.81% |
| UuidStringConversionBench | benchCreationOfUuidFromBytes | | 5000 | 5 | 907.264kb | 2.303μs | ±1.05% |
| UuidStringConversionBench | benchLazyCreationOfUuidFromBytes | | 5000 | 5 | 907.312kb | 0.544μs | ±0.97% |
| UuidStringConversionBench | benchFastCreationOfUuidFromBytes | | 5000 | 5 | 907.312kb | 0.764μs | ±1.12% |
| UuidStringConversionBench | benchFastLazyCreationOfUuidFromBytes | | 5000 | 5 | 907.312kb | 0.538μs | ±1.28% |
| UuidStringConversionBench | benchCreationOfPromiscuousUuidsFromBytes | | 5000 | 5 | 907.408kb | 247.696μs | ±0.99% |
| UuidStringConversionBench | benchLazyCreationOfPromiscuousUuidsFromBytes | | 5000 | 5 | 907.408kb | 59.408μs | ±0.97% |
| UuidStringConversionBench | benchFastCreationOfPromiscuousUuidsFromBytes | | 5000 | 5 | 916.544kb | 82.147μs | ±0.50% |
| UuidStringConversionBench | benchFastLazyCreationOfPromiscuousUuidsFromBytes | | 5000 | 5 | 907.408kb | 57.002μs | ±0.94% |
| UuidStringConversionBench | benchToStringConversionOfTinyUuid | | 5000 | 5 | 907.312kb | 0.464μs | ±1.33% |
| UuidStringConversionBench | benchLazyToStringConversionOfTinyUuid | | 5000 | 5 | 907.312kb | 0.034μs | ±1.02% |
| UuidStringConversionBench | benchFastStringToStringConversionOfTinyUuid | | 5000 | 5 | 907.408kb | 0.053μs | ±0.24% |
| UuidStringConversionBench | benchFastBytesToStringConversionOfTinyUuid | | 5000 | 5 | 907.408kb | 0.042μs | ±1.13% |
| UuidStringConversionBench | benchFastLazyToStringConversionOfTinyUuid | | 5000 | 5 | 907.408kb | 0.035μs | ±1.44% |
| UuidStringConversionBench | benchToStringConversionOfHugeUuid | | 5000 | 5 | 907.312kb | 0.467μs | ±0.68% |
| UuidStringConversionBench | benchLazyToStringConversionOfHugeUuid | | 5000 | 5 | 907.312kb | 0.033μs | ±0.88% |
| UuidStringConversionBench | benchFastStringToStringConversionOfHugeUuid | | 5000 | 5 | 907.408kb | 0.051μs | ±0.52% |
| UuidStringConversionBench | benchFastBytesToStringConversionOfHugeUuid | | 5000 | 5 | 907.408kb | 0.041μs | ±0.48% |
| UuidStringConversionBench | benchFastLazyToStringConversionOfHugeUuid | | 5000 | 5 | 907.408kb | 0.033μs | ±0.90% |
| UuidStringConversionBench | benchToStringConversionOfUuid | | 5000 | 5 | 907.264kb | 0.466μs | ±1.26% |
| UuidStringConversionBench | benchLazyToStringConversionOfUuid | | 5000 | 5 | 907.312kb | 0.033μs | ±1.16% |
| UuidStringConversionBench | benchFastStringToStringConversionOfUuid | | 5000 | 5 | 907.312kb | 0.052μs | ±1.18% |
| UuidStringConversionBench | benchFastBytesToStringConversionOfUuid | | 5000 | 5 | 907.312kb | 0.041μs | ±0.79% |
| UuidStringConversionBench | benchFastLazyToStringConversionOfUuid | | 5000 | 5 | 907.312kb | 0.034μs | ±0.69% |
| UuidStringConversionBench | benchToStringConversionOfPromiscuousUuids | | 5000 | 5 | 907.408kb | 54.634μs | ±0.98% |
| UuidStringConversionBench | benchLazyToStringConversionOfPromiscuousUuids | | 5000 | 5 | 907.408kb | 5.154μs | ±0.75% |
| UuidStringConversionBench | benchFastStringToStringConversionOfPromiscuousUuids | | 5000 | 5 | 907.408kb | 7.494μs | ±0.45% |
| UuidStringConversionBench | benchFastBytesToStringConversionOfPromiscuousUuids | | 5000 | 5 | 907.408kb | 5.999μs | ±0.96% |
| UuidStringConversionBench | benchFastLazyToStringConversionOfPromiscuousUuids | | 5000 | 5 | 907.408kb | 5.122μs | ±0.70% |
| UuidStringConversionBench | benchToBytesConversionOfTinyUuid | | 5000 | 5 | 907.312kb | 0.099μs | ±1.32% |
| UuidStringConversionBench | benchLazyToBytesConversionOfTinyUuid | | 5000 | 5 | 907.312kb | 0.170μs | ±0.91% |
| UuidStringConversionBench | benchFastStringToBytesConversionOfTinyUuid | | 5000 | 5 | 907.408kb | 0.057μs | ±0.81% |
| UuidStringConversionBench | benchFastBytesToBytesConversionOfTinyUuid | | 5000 | 5 | 907.408kb | 0.052μs | ±0.93% |
| UuidStringConversionBench | benchFastLazyToBytesConversionOfTinyUuid | | 5000 | 5 | 907.408kb | 0.040μs | ±1.07% |
| UuidStringConversionBench | benchToBytesConversionOfHugeUuid | | 5000 | 5 | 907.312kb | 0.095μs | ±1.21% |
| UuidStringConversionBench | benchLazyToBytesConversionOfHugeUuid | | 5000 | 5 | 907.312kb | 0.169μs | ±0.63% |
| UuidStringConversionBench | benchFastStringToBytesConversionOfHugeUuid | | 5000 | 5 | 907.408kb | 0.057μs | ±0.84% |
| UuidStringConversionBench | benchFastBytesToBytesConversionOfHugeUuid | | 5000 | 5 | 907.408kb | 0.053μs | ±0.73% |
| UuidStringConversionBench | benchFastLazyToBytesConversionOfHugeUuid | | 5000 | 5 | 907.408kb | 0.042μs | ±1.11% |
| UuidStringConversionBench | benchToBytesConversionOfUuid | | 5000 | 5 | 907.264kb | 0.098μs | ±0.78% |
| UuidStringConversionBench | benchLazyToBytesConversionOfUuid | | 5000 | 5 | 907.312kb | 0.174μs | ±1.01% |
| UuidStringConversionBench | benchFastStringToBytesConversionOfUuid | | 5000 | 5 | 907.312kb | 0.056μs | ±0.82% |
| UuidStringConversionBench | benchFastBytesToBytesConversionOfUuid | | 5000 | 5 | 907.312kb | 0.051μs | ±1.39% |
| UuidStringConversionBench | benchFastLazyToBytesConversionOfUuid | | 5000 | 5 | 907.312kb | 0.041μs | ±0.94% |
| UuidStringConversionBench | benchToBytesConversionOfPromiscuousUuids | | 5000 | 5 | 907.408kb | 12.613μs | ±0.79% |
| UuidStringConversionBench | benchLazyToBytesConversionOfPromiscuousUuids | | 5000 | 5 | 907.408kb | 20.807μs | ±0.89% |
| UuidStringConversionBench | benchFastStringToBytesConversionOfPromiscuousUuids | | 5000 | 5 | 907.408kb | 8.181μs | ±1.05% |
| UuidStringConversionBench | benchFastBytesToBytesConversionOfPromiscuousUuids | | 5000 | 5 | 907.408kb | 7.922μs | ±0.74% |
| UuidStringConversionBench | benchFastLazyToBytesConversionOfPromiscuousUuids | | 5000 | 5 | 907.408kb | 6.209μs | ±0.60% |
| UuidSerializationBench | benchSerializationOfTinyUuid | | 5000 | 5 | 964.872kb | 0.680μs | ±1.32% |
| UuidSerializationBench | benchLazySerializationOfTinyUuid | | 5000 | 5 | 964.920kb | 0.168μs | ±0.80% |
| UuidSerializationBench | benchFastStringSerializationOfTinyUuid | | 5000 | 5 | 964.920kb | 0.204μs | ±0.71% |
| UuidSerializationBench | benchFastBytesSerializationOfTinyUuid | | 5000 | 5 | 964.920kb | 0.201μs | ±1.12% |
| UuidSerializationBench | benchFastLazySerializationOfTinyUuid | | 5000 | 5 | 964.920kb | 0.166μs | ±0.33% |
| UuidSerializationBench | benchSerializationOfHugeUuid | | 5000 | 5 | 964.872kb | 0.674μs | ±1.42% |
| UuidSerializationBench | benchLazySerializationOfHugeUuid | | 5000 | 5 | 964.920kb | 0.169μs | ±1.05% |
| UuidSerializationBench | benchFastStringSerializationOfHugeUuid | | 5000 | 5 | 964.920kb | 0.203μs | ±1.12% |
| UuidSerializationBench | benchFastBytesSerializationOfHugeUuid | | 5000 | 5 | 964.920kb | 0.205μs | ±0.52% |
| UuidSerializationBench | benchFastLazySerializationOfHugeUuid | | 5000 | 5 | 964.920kb | 0.166μs | ±0.55% |
| UuidSerializationBench | benchSerializationOfUuid | | 5000 | 5 | 964.872kb | 0.665μs | ±0.63% |
| UuidSerializationBench | benchLazySerializationOfUuid | | 5000 | 5 | 964.872kb | 0.179μs | ±1.15% |
| UuidSerializationBench | benchFastStringSerializationOfUuid | | 5000 | 5 | 964.920kb | 0.218μs | ±1.04% |
| UuidSerializationBench | benchFastBytesSerializationOfUuid | | 5000 | 5 | 964.920kb | 0.203μs | ±0.73% |
| UuidSerializationBench | benchFastLazySerializationOfUuid | | 5000 | 5 | 964.920kb | 0.166μs | ±0.70% |
| UuidSerializationBench | benchSerializationOfPromiscuousUuids | | 5000 | 5 | 965.400kb | 71.976μs | ±0.63% |
| UuidSerializationBench | benchLazySerializationOfPromiscuousUuids | | 5000 | 5 | 968.344kb | 17.117μs | ±0.48% |
| UuidSerializationBench | benchFastStringSerializationOfPromiscuousUuids | | 5000 | 5 | 968.344kb | 22.788μs | ±0.87% |
| UuidSerializationBench | benchFastBytesSerializationOfPromiscuousUuids | | 5000 | 5 | 965.016kb | 22.886μs | ±0.96% |
| UuidSerializationBench | benchFastLazySerializationOfPromiscuousUuids | | 5000 | 5 | 968.344kb | 17.691μs | ±1.10% |
| UuidSerializationBench | benchDeSerializationOfTinyUuid | | 5000 | 5 | 973.576kb | 4.486μs | ±1.04% |
| UuidSerializationBench | benchLazyDeSerializationOfTinyUuid | | 5000 | 5 | 965.360kb | 0.295μs | ±0.93% |
| UuidSerializationBench | benchFastStringDeSerializationOfTinyUuid | | 5000 | 5 | 966.368kb | 1.362μs | ±0.75% |
| UuidSerializationBench | benchFastBytesDeSerializationOfTinyUuid | | 5000 | 5 | 966.632kb | 1.239μs | ±1.12% |
| UuidSerializationBench | benchFastLazyDeSerializationOfTinyUuid | | 5000 | 5 | 965.888kb | 0.299μs | ±1.06% |
| UuidSerializationBench | benchDeSerializationOfHugeUuid | | 5000 | 5 | 965.880kb | 2.175μs | ±1.01% |
| UuidSerializationBench | benchLazyDeSerializationOfHugeUuid | | 5000 | 5 | 965.360kb | 0.293μs | ±0.44% |
| UuidSerializationBench | benchFastStringDeSerializationOfHugeUuid | | 5000 | 5 | 966.368kb | 1.019μs | ±0.95% |
| UuidSerializationBench | benchFastBytesDeSerializationOfHugeUuid | | 5000 | 5 | 966.384kb | 0.939μs | ±1.04% |
| UuidSerializationBench | benchFastLazyDeSerializationOfHugeUuid | | 5000 | 5 | 965.888kb | 0.325μs | ±0.94% |
| UuidSerializationBench | benchDeSerializationOfUuid | | 5000 | 5 | 965.968kb | 4.321μs | ±0.94% |
| UuidSerializationBench | benchLazyDeSerializationOfUuid | | 5000 | 5 | 965.312kb | 0.324μs | ±1.11% |
| UuidSerializationBench | benchFastStringDeSerializationOfUuid | | 5000 | 5 | 966.272kb | 1.289μs | ±0.43% |
| UuidSerializationBench | benchFastBytesDeSerializationOfUuid | | 5000 | 5 | 966.632kb | 1.361μs | ±1.32% |
| UuidSerializationBench | benchFastLazyDeSerializationOfUuid | | 5000 | 5 | 965.888kb | 0.304μs | ±0.75% |
| UuidSerializationBench | benchDeSerializationOfPromiscuousUuids | | 5000 | 5 | 998.208kb | 420.544μs | ±0.97% |
| UuidSerializationBench | benchLazyDeSerializationOfPromiscuousUuids | | 5000 | 5 | 982.328kb | 29.512μs | ±1.00% |
| UuidSerializationBench | benchFastStringDeSerializationOfPromiscuousUuids | | 5000 | 5 | 1.015mb | 139.373μs | ±0.75% |
| UuidSerializationBench | benchFastBytesDeSerializationOfPromiscuousUuids | | 5000 | 5 | 1.023mb | 144.521μs | ±0.82% |
| UuidSerializationBench | benchFastLazyDeSerializationOfPromiscuousUuids | | 5000 | 5 | 984.440kb | 30.205μs | ±0.62% |
| NonLazyUuidConversionBench | benchStringConversionOfUuid | | 5000 | 5 | 907.264kb | 0.454μs | ±0.73% |
| NonLazyUuidConversionBench | benchFastStringConversionOfUuid | | 5000 | 5 | 907.264kb | 0.041μs | ±1.00% |
| UuidFieldExtractionBench | benchGetFields | | 5000 | 5 | 907.168kb | 0.038μs | ±1.01% |
| UuidFieldExtractionBench | benchLazyGetFields | | 5000 | 5 | 907.216kb | 0.066μs | ±0.89% |
| UuidFieldExtractionBench | benchFastStringGetFields | | 5000 | 5 | 907.264kb | 0.037μs | ±0.80% |
| UuidFieldExtractionBench | benchFastBytesGetFields | | 5000 | 5 | 907.216kb | 0.037μs | ±1.10% |
| UuidFieldExtractionBench | benchFastLazyGetFields | | 5000 | 5 | 907.216kb | 0.060μs | ±0.83% |
| UuidFieldExtractionBench | benchGetFields10Times | | 5000 | 5 | 907.216kb | 0.250μs | ±1.25% |
| UuidFieldExtractionBench | benchLazyGetFields10Times | | 5000 | 5 | 907.264kb | 0.500μs | ±0.86% |
| UuidFieldExtractionBench | benchFastStringGetFields10Times | | 5000 | 5 | 907.264kb | 0.235μs | ±1.00% |
| UuidFieldExtractionBench | benchFastBytesGetFields10Times | | 5000 | 5 | 907.264kb | 0.239μs | ±0.87% |
| UuidFieldExtractionBench | benchFastLazyStringGetFields10Times | | 5000 | 5 | 907.312kb | 0.466μs | ±0.55% |
| UuidFieldExtractionBench | benchGetHex | | 5000 | 5 | 907.168kb | 0.886μs | ±0.81% |
| UuidFieldExtractionBench | benchLazyGetHex | | 5000 | 5 | 907.168kb | 0.910μs | ±0.76% |
| UuidFieldExtractionBench | benchFastStringGetHex | | 5000 | 5 | 907.216kb | 0.080μs | ±0.34% |
| UuidFieldExtractionBench | benchFastBytesGetHex | | 5000 | 5 | 907.216kb | 0.079μs | ±1.01% |
| UuidFieldExtractionBench | benchFastLazyStringGetHex | | 5000 | 5 | 907.264kb | 0.103μs | ±1.20% |
| UuidFieldExtractionBench | benchGetHex10Times | | 5000 | 5 | 907.216kb | 8.671μs | ±0.70% |
| UuidFieldExtractionBench | benchLazyGetHex10Times | | 5000 | 5 | 907.216kb | 9.605μs | ±0.84% |
| UuidFieldExtractionBench | benchFastStringGetHex10Times | | 5000 | 5 | 907.264kb | 0.314μs | ±0.62% |
| UuidFieldExtractionBench | benchFastBytesGetHex10Times | | 5000 | 5 | 907.264kb | 0.310μs | ±0.26% |
| UuidFieldExtractionBench | benchFastLazyStringGetHex10Times | | 5000 | 5 | 907.312kb | 0.516μs | ±0.86% |
| UuidFieldExtractionBench | benchGetInteger | | 5000 | 5 | 907.168kb | 151.444μs | ±0.57% |
| UuidFieldExtractionBench | benchLazyGetInteger | | 5000 | 5 | 907.216kb | 149.709μs | ±0.79% |
| UuidFieldExtractionBench | benchFastStringGetInteger | | 5000 | 5 | 907.264kb | 0.314μs | ±1.10% |
| UuidFieldExtractionBench | benchFastBytesGetInteger | | 5000 | 5 | 907.264kb | 0.225μs | ±0.97% |
| UuidFieldExtractionBench | benchFastLazyStringGetInteger | | 5000 | 5 | 907.264kb | 0.304μs | ±0.77% |
| UuidFieldExtractionBench | benchGetInteger10Times | | 5000 | 5 | 907.216kb | 1.473ms | ±0.66% |
| UuidFieldExtractionBench | benchLazyGetInteger10Times | | 5000 | 5 | 907.264kb | 1.494ms | ±0.41% |
| UuidFieldExtractionBench | benchFastStringGetInteger10Times | | 5000 | 5 | 907.312kb | 0.527μs | ±1.45% |
| UuidFieldExtractionBench | benchFastBytesGetInteger10Times | | 5000 | 5 | 907.264kb | 0.434μs | ±1.05% |
| UuidFieldExtractionBench | benchFastLazyStringGetInteger10Times | | 5000 | 5 | 907.312kb | 0.709μs | ±0.78% |
| UuidGenerationBench | benchUuid1GenerationWithoutParameters | | 5000 | 5 | 907.312kb | 5.004μs | ±0.98% |
| UuidGenerationBench | benchFastUuid1GenerationWithoutParameters | | 5000 | 5 | 907.408kb | 8.366μs | ±1.13% |
| UuidGenerationBench | benchFastLazyUuid1GenerationWithoutParameters | | 5000 | 5 | 907.408kb | 8.034μs | ±0.80% |
| UuidGenerationBench | benchUuid1GenerationWithNode | | 5000 | 5 | 907.264kb | 4.386μs | ±0.72% |
| UuidGenerationBench | benchFastUuid1GenerationWithNode | | 5000 | 5 | 907.312kb | 7.735μs | ±0.85% |
| UuidGenerationBench | benchFastLazyUuid1GenerationWithNode | | 5000 | 5 | 907.312kb | 7.132μs | ±0.55% |
| UuidGenerationBench | benchUuid1GenerationWithNodeAndClockSequence | | 5000 | 5 | 907.408kb | 4.001μs | ±1.04% |
| UuidGenerationBench | benchFastUuid1GenerationWithNodeAndClockSequence | | 5000 | 5 | 907.408kb | 7.221μs | ±0.81% |
| UuidGenerationBench | benchFastLazyUuid1GenerationWithNodeAndClockSequence | | 5000 | 5 | 907.408kb | 7.214μs | ±0.63% |
| UuidGenerationBench | benchUuid2GenerationWithDomainAndLocalIdentifier | | 5000 | 5 | 907.408kb | 8.624μs | ±1.08% |
| UuidGenerationBench | benchFastUuid2GenerationWithDomainAndLocalIdentifier | | 5000 | 5 | 907.408kb | 11.792μs | ±0.46% |
| UuidGenerationBench | benchFastLazyUuid2GenerationWithDomainAndLocalIdentifier | | 5000 | 5 | 907.504kb | 11.061μs | ±0.55% |
| UuidGenerationBench | benchUuid2GenerationWithDomainAndLocalIdentifierAndNode | | 5000 | 5 | 907.408kb | 7.554μs | ±0.45% |
| UuidGenerationBench | benchFastUuid2GenerationWithDomainAndLocalIdentifierAndNode | | 5000 | 5 | 907.504kb | 11.063μs | ±0.84% |
| UuidGenerationBench | benchFastLazyUuid2GenerationWithDomainAndLocalIdentifierAndNode | | 5000 | 5 | 907.504kb | 10.481μs | ±0.88% |
| UuidGenerationBench | benchUuid2GenerationWithDomainAndLocalIdentifierAndNodeAndClockSequence | | 5000 | 5 | 907.504kb | 6.931μs | ±0.71% |
| UuidGenerationBench | benchFastUuid2GenerationWithDomainAndLocalIdentifierAndNodeAndClockSequence | | 5000 | 5 | 907.600kb | 10.151μs | ±0.48% |
| UuidGenerationBench | benchFastLazyUuid2GenerationWithDomainAndLocalIdentifierAndNodeAndClockSequence | | 5000 | 5 | 907.600kb | 9.862μs | ±0.98% |
| UuidGenerationBench | benchUuid3Generation | | 5000 | 5 | 907.216kb | 1.413μs | ±1.02% |
| UuidGenerationBench | benchLazyUuid3Generation | | 5000 | 5 | 907.264kb | 1.512μs | ±1.31% |
| UuidGenerationBench | benchFastStringUuid3Generation | | 5000 | 5 | 907.264kb | 4.601μs | ±0.78% |
| UuidGenerationBench | benchFastBytesUuid3Generation | | 5000 | 5 | 907.264kb | 4.610μs | ±0.71% |
| UuidGenerationBench | benchFastLazyUuid3Generation | | 5000 | 5 | 907.264kb | 4.232μs | ±1.48% |
| UuidGenerationBench | benchUuid4Generation | | 5000 | 5 | 907.216kb | 1.471μs | ±0.97% |
| UuidGenerationBench | benchFastUuid4Generation | | 5000 | 5 | 907.264kb | 4.652μs | ±1.09% |
| UuidGenerationBench | benchFastLazyUuid4Generation | | 5000 | 5 | 907.264kb | 4.386μs | ±0.92% |
| UuidGenerationBench | benchUuid5Generation | | 5000 | 5 | 907.216kb | 1.515μs | ±1.32% |
| UuidGenerationBench | benchLazyUuid5Generation | | 5000 | 5 | 907.264kb | 1.571μs | ±0.55% |
| UuidGenerationBench | benchFastStringUuid5Generation | | 5000 | 5 | 907.264kb | 4.714μs | ±1.42% |
| UuidGenerationBench | benchFastBytesUuid5Generation | | 5000 | 5 | 907.264kb | 4.727μs | ±0.49% |
| UuidGenerationBench | benchFastLazyUuid5Generation | | 5000 | 5 | 907.264kb | 4.400μs | ±1.36% |
| UuidGenerationBench | benchUuid6GenerationWithoutParameters | | 5000 | 5 | 907.312kb | 5.837μs | ±0.50% |
| UuidGenerationBench | benchFastUuid6GenerationWithoutParameters | | 5000 | 5 | 907.408kb | 9.298μs | ±0.41% |
| UuidGenerationBench | benchFastLazyUuid6GenerationWithoutParameters | | 5000 | 5 | 907.408kb | 8.772μs | ±1.38% |
| UuidGenerationBench | benchUuid6GenerationWithNode | | 5000 | 5 | 907.264kb | 4.832μs | ±0.85% |
| UuidGenerationBench | benchFastUuid6GenerationWithNode | | 5000 | 5 | 907.312kb | 8.155μs | ±1.31% |
| UuidGenerationBench | benchFastLazyUuid6GenerationWithNode | | 5000 | 5 | 907.312kb | 7.883μs | ±1.15% |
| UuidGenerationBench | benchUuid6GenerationWithNodeAndClockSequence | | 5000 | 5 | 907.408kb | 4.430μs | ±0.36% |
| UuidGenerationBench | benchFastUuid6GenerationWithNodeAndClockSequence | | 5000 | 5 | 907.408kb | 8.162μs | ±0.51% |
| UuidGenerationBench | benchFastLazyUuid6GenerationWithNodeAndClockSequence | | 5000 | 5 | 907.408kb | 7.603μs | ±1.04% |
| UuidGenerationBench | benchUuid7Generation | | 5000 | 5 | 907.216kb | 2.459μs | ±0.78% |
| UuidGenerationBench | benchFastUuid7Generation | | 5000 | 5 | 907.264kb | 5.812μs | ±0.85% |
| UuidGenerationBench | benchFastLazyUuid7Generation | | 5000 | 5 | 907.264kb | 5.421μs | ±1.03% |
| UuidGenerationBench | benchUuid7GenerationWithDateTime | | 5000 | 5 | 907.312kb | 2.818μs | ±0.67% |
| UuidGenerationBench | benchFastUuid7GenerationWithDateTime | | 5000 | 5 | 907.312kb | 6.199μs | ±0.69% |
| UuidGenerationBench | benchFastLazyUuid7GenerationWithDateTime | | 5000 | 5 | 907.408kb | 5.648μs | ±0.94% |
| UuidGenerationBench | benchUuid8 | | 5000 | 5 | 907.168kb | 0.996μs | ±0.89% |
| UuidGenerationBench | benchFastUuid8 | | 5000 | 5 | 907.168kb | 4.344μs | ±0.78% |
| UuidGenerationBench | benchFastLazyUuid8 | | 5000 | 5 | 907.216kb | 3.874μs | ±0.65% |
+----------------------------+---------------------------------------------------------------------------------+-----+------+-----+-----------+-----------+--------+
脚本输出
bench*
(不带Fast*
和Lazy*
)是未使用懒加载的ramsey/uuid
benchLazy*
是使用懒加载的ramsey/uuid
benchFast*
(不带String*
或Bytes*
)是在不能同时使用基于字符串的实现和基于字节的实现(只能使用其中一个)的情况下未使用懒加载的mougrim/fast-uuid
benchFastString*
是未使用懒加载的基于字符串的mougrim/fast-uuid
实现benchFastBytes*
是未使用懒加载的基于字节的mougrim/fast-uuid
实现benchLazy*
是使用懒加载的基于字符串的mougrim/fast-uuid
实现(懒加载不能基于字节)
如您所见,生成未进行优化,但如果需要,您可以提交一个MR。
如果您只使用 fromString
和 toString
转换,并且不需要DI和自定义UUID工厂,则 ramsey/uuid
对您来说是最佳选择。
在其他任何情况下,最好使用具有或没有懒加载的 mougrim/fast-uuid
。
限制
- 仅支持RFC-4122和非标准UUID变体
- 不支持GUID
- 不要使用如
$uuid instanceof UuidV7
这样的检查,请使用$uuid->getVersion()
或$uuid->getFields()->getVersion()
来检查版本 - 字符串UUID应全部小写,不带 'urn:uuid:' 和花括号 ('{' 和 '}'),并符合
FastStringFields::VALID_PATTERN
- 如果您想使用延迟初始化或序列化/反序列化UUID,您必须使用
FastUuidFactoryFactory::createAndSetFactory()
方法,并且只能使用一个FastUuidFactory实例。 - 更改
$codec
(\Ramsey\Uuid\Codec\CodecInterface) 存在风险,因为在某些地方直接转换使用了而没有使用$codec
。
版权和许可
《mougrim/fast-uuid》库的版权归 Mougrim 所有,并授权在MIT许可(MIT)下使用。有关更多信息,请参阅 license.md。