Une implémentation de la fonction memchr a été proposée pour le noyau Linux, fonctionnant jusqu'à 4 fois plus vite

Un ensemble de correctifs avec une implémentation optimisée de la fonction memchr(), utilisée pour rechercher un symbole dans un tableau, a été proposé pour inclusion dans le noyau Linux. Contrairement à l'ancienne version, qui utilisait la comparaison octet par octet, l'implémentation proposée est construite en tenant compte de l'utilisation complète des registres CPU 64 et 32 ​​bits. Au lieu d'octets, la comparaison est effectuée à l'aide de mots machine, ce qui permet de comparer au moins 4 octets à la fois.

Lors d'une recherche dans des chaînes volumineuses, la nouvelle option s'est avérée environ 4 fois plus rapide que l'ancienne (par exemple, pour des chaînes de 1000 512 caractères). Pour les petites chaînes, l'efficacité de la nouvelle implémentation n'est pas si significative, mais reste supérieure à celle de la version originale. Dans le noyau Linux, la taille des chaînes traitées dans memchr() atteint 512 octets. Le gain de performances pour des chaînes de 20 octets, dans une situation où le caractère recherché se trouve en fin de chaîne, est de XNUMX %.

Le test du noyau 5.18 avec la nouvelle option "memchr()" pour les architectures 32 bits et 64 bits n'a révélé aucun problème. Le gain de performances global des sous-systèmes du noyau lors de l'utilisation de la version optimisée de « memchr() » n'a pas encore été évalué, ni la faisabilité du remplacement de l'implémentation n'a été analysée (dans le code du noyau, les appels à la fonction memchr() se produisent 129 fois , y compris dans le code des pilotes et des systèmes de fichiers).

Source: opennet.ru

Ajouter un commentaire