Za jedro Linuxa je bila predlagana izvedba funkcije memchr, ki deluje do 4-krat hitreje

Nabor popravkov z optimizirano izvedbo funkcije memchr(), ki se uporablja za iskanje simbola v matriki, je bil predlagan za vključitev v jedro Linuxa. Za razliko od stare različice, ki je uporabljala primerjavo bajt za bajtom, je predlagana izvedba zgrajena ob upoštevanju polne uporabe 64- in 32-bitnih registrov CPU. Namesto bajtov se primerjava izvaja s strojnimi besedami, kar omogoča primerjavo vsaj 4 bajtov naenkrat.

Pri iskanju v velikih nizih se je nova možnost izkazala za približno 4-krat hitrejšo od stare (na primer za nize 1000 znakov). Pri majhnih nizih učinkovitost nove izvedbe ni tako pomembna, vendar je še vedno višja v primerjavi s prvotno različico. V jedru Linuxa velikost nizov, obdelanih v memchr(), doseže 512 bajtov. Povečanje zmogljivosti za 512-bajtne nize v situaciji, ko je iskani znak na koncu niza, je 20 %.

Testiranje jedra 5.18 z novo možnostjo "memchr()" za 32-bitne in 64-bitne arhitekture ni razkrilo nobenih težav. Splošno povečanje zmogljivosti podsistemov jedra pri uporabi optimizirane različice »memchr()« še ni bilo ocenjeno, niti ni bila analizirana izvedljivost zamenjave implementacije (v kodi jedra se klici funkcije memchr() pojavijo 129-krat , vključno s kodo gonilnikov in datotečnih sistemov).

Vir: opennet.ru

Dodaj komentar