mougrim/fast-uuid

0.0.3 2024-07-13 07:30 UTC

This package is auto-updated.

Last update: 2024-09-13 07:54:02 UTC


README

一个PHP库,用于生成和使用UUID,在某些情况下比 ramsey/uuid 更快。

Source Code Download Package PHP Programming Language Read License

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。

如果您只使用 fromStringtoString 转换,并且不需要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