(English version)
Dernièrement, en analysant les performances d'une application au moyen de l'excellent outil blackfire, nous avons constaté un te...
For further actions, you may consider blocking this person and/or reporting abuse
ext-uuip c'est le résultat via l'extension PECL ?
Est-il possible d'avoir le code des tests ?
Sur le custom on peut gagner encore un peu.
fromBytes
appelle le constructeur qui vérifie la chaîne avecpreg_match
, la chaîne étant valide par construction, il faudrait essayer avec un constructeur sans vérification de format. Un million depreg_match
ça doit même être assez important.Je viens d'ajouter le code en fin d'article ;)
J'ai refait un module en C pour voir pour aller encore plus loin.
J'ai modifié le module pecl pour garder les tests et les signatures de fonction
Premier test, sans validation du uuid sur le constructeur, deuxième en gardant la validation, troisième la version custom de git:
ext-uuid => 2753 ms
ext-uuid_c => 3735 ms
custom => 4816 ms
Là où il y a le plus à gagner c'est sur le unparse.
Les deux fonctions modifiées
Allez, améliorons directement util-linux spinics.net/lists/util-linux-ng/ms... sur le unparse ça divise par 10 le temps
Du coup en descendant les étages on finit par arriver à l'assembleur et aux instructions SIMD
stackoverflow.com/questions/538237...
Beau travail !
C'est mergé github.com/karelzak/util-linux/com...
Coucou
Dans le cas des applications que je conçoit, il n'y a jamais besoin de convertir des UUID du format string au format binaire (ou vice versa). Je n'utilise que
uuid_create()
. Soit ces lignes laJe ne vois pas bien l’intérêt de passer de string a binaire :( Ah si peut être : Si on utilise un SGBD qui ne support pas les UUID nativement. Heureusement que j'utilise PostgreSQL :)
Sinon si tu trouves des optims à backporté dans le polyfill, je suis preneur :)
Nicolas, suite à mon article, a déjà soumis une PR pour optimiser le polyfill :)
github.com/symfony/polyfill/pull/244
Il est réactif le bougre :)
Merci pour ton post,
Il est encore possible d'améliorer les performances de
fromBytes
(au prix d'un peu de lisibilité).ps: dans le gist le nombre d'itération est de
10_000_000
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)