Predložena je implementacija funkcije memchr za Linux kernel, koja radi do 4 puta brže

Skup zakrpa s optimiziranom implementacijom funkcije memchr(), koja se koristi za traženje simbola u nizu, predložen je za uključivanje u Linux kernel. Za razliku od stare verzije, koja je koristila usporedbu bajt po bajt, predložena implementacija izgrađena je uzimajući u obzir punu upotrebu 64- i 32-bitnih CPU registara. Umjesto bajtova, usporedba se izvodi pomoću strojnih riječi, što omogućuje usporedbu najmanje 4 bajta odjednom.

Kod pretraživanja u velikim nizovima nova opcija se pokazala oko 4 puta bržom od stare (npr. za nizove od 1000 znakova). Za male nizove, učinkovitost nove implementacije nije toliko značajna, ali je ipak veća u usporedbi s izvornom verzijom. U Linux jezgri, veličina nizova obrađenih u memchr() doseže 512 bajtova. Dobitak izvedbe za nizove od 512 bajta, u situaciji kada je traženi znak na kraju niza, iznosi 20%.

Testiranje kernela 5.18 s novom opcijom "memchr()" za 32-bitne i 64-bitne arhitekture nije otkrilo nikakve probleme. Ukupni dobitak performansi podsustava jezgre pri korištenju optimizirane verzije "memchr()" još nije procijenjen, niti je analizirana izvedivost zamjene implementacije (u kodu jezgre, pozivi funkciji memchr() javljaju se 129 puta , uključujući kod upravljačkih programa i datotečnih sustava).

Izvor: opennet.ru

Dodajte komentar