Javasolták a memchr függvény megvalósítását a Linux kernelhez, amely akár 4-szer gyorsabban fut

Javasolták, hogy a memchr() függvény optimalizált megvalósítását tartalmazó javítások készletét a tömbben egy szimbólum keresésére használják fel a Linux kernelbe. A régi verziótól eltérően, amely bájtonkénti összehasonlítást használt, a javasolt megvalósítás a 64 és 32 bites CPU regiszterek teljes kihasználásának figyelembevételével készült. A bájtok helyett az összehasonlítás gépi szavakkal történik, ami lehetővé teszi legalább 4 bájt egyidejű összehasonlítását.

Nagy karakterláncokban történő kereséskor az új lehetőség körülbelül 4-szer gyorsabbnak bizonyult, mint a régi (például 1000 karakteres karakterláncok esetén). Kis karakterláncok esetén az új megvalósítás hatékonysága nem olyan jelentős, de még mindig magasabb az eredeti verzióhoz képest. A Linux kernelben a memchr()-ben feldolgozott karakterláncok mérete eléri az 512 bájtot. Az 512 bájtos karakterláncok teljesítménynövekedése 20% olyan helyzetben, amikor a keresett karakter a karakterlánc végén van.

Az 5.18-as kernel tesztelése az új "memchr()" opcióval 32 bites és 64 bites architektúrákhoz nem tárt fel semmilyen problémát. A kernel alrendszerek teljes teljesítménynövekedését a „memchr()” optimalizált verziójának használatakor még nem értékelték, és nem elemezték a megvalósítás cseréjének megvalósíthatóságát (a kernelkódban 129 alkalommal fordul elő a memchr() függvény hívása , beleértve az illesztőprogramok és fájlrendszerek kódját).

Forrás: opennet.ru

Hozzászólás