S'ha proposat una implementació de la funció memchr per al nucli de Linux, que s'executa fins a 4 vegades més ràpid

S'ha proposat un conjunt de pedaços amb una implementació optimitzada de la funció memchr(), que s'utilitza per cercar un símbol en una matriu, per incloure'ls al nucli de Linux. A diferència de la versió antiga, que utilitzava la comparació byte a byte, la implementació proposada es construeix tenint en compte l'ús complet dels registres de CPU de 64 i 32 bits. En lloc de bytes, la comparació es realitza mitjançant paraules màquina, que permet comparar almenys 4 bytes alhora.

En cercar en cadenes grans, la nova opció va resultar ser unes 4 vegades més ràpida que l'antiga (per exemple, per a cadenes de 1000 caràcters). Per a les cadenes petites, l'eficiència de la nova implementació no és tan significativa, però encara és superior en comparació amb la versió original. Al nucli de Linux, la mida de les cadenes processades a memchr() arriba als 512 bytes. El guany de rendiment de les cadenes de 512 bytes, en una situació en què el caràcter cercat es troba al final de la cadena, és del 20%.

Provar el nucli 5.18 amb la nova opció "memchr()" per a arquitectures de 32 i 64 bits no va revelar cap problema. El guany de rendiment global dels subsistemes del nucli quan s'utilitza la versió optimitzada de "memchr()" encara no s'ha avaluat, ni s'ha analitzat la viabilitat de substituir la implementació (al codi del nucli, les trucades a la funció memchr() es produeixen 129 vegades. , inclòs al codi de controladors i sistemes de fitxers).

Font: opennet.ru

Afegeix comentari