DEV Community

Discussion on: Performance des UUIDs

Collapse
 
albanio profile image
Alban Baixas • Edited

Merci pour ton post,

Il est encore possible d'améliorer les performances de fromBytes (au prix d'un peu de lisibilité).

// 1_000_000 itérations
custom-without-check    => 541 ms
custom-without-check-v2 => 521 ms
    public static function fromBytes(string $bytes): self
    {
        if (\strlen($bytes) !== 16) {
            throw new RuntimeException("Invalid binary UUID. Length is not 16 bytes");
        }

        return new self(
            \substr_replace(
                \substr_replace(
                    \substr_replace(
                        \substr_replace(\bin2hex($bytes), '-', 8, 0)
                        , '-', 13, 0
                    ), '-', 18, 0
                ), '-', 23, 0
            ), false
        );
    }

ps: dans le gist le nombre d'itération est de 10_000_000

Collapse
 
fredbouchery profile image
Frédéric Bouchery

En effet, il y a un très léger gain. C'est intéressant de voir que cette écriture puisse faire gagner quelques "ms".
(Oui, sur le gist, j'était resté à 10 millions, car j'avais fait pas mal de tests avec cette valeur)