Pentru kernelul Linux a fost propusă o implementare a funcției memchr, care funcționează de până la 4 ori mai repede

Pentru a fi inclus în nucleul Linux, a fost propus un set de patch-uri cu o implementare optimizată a funcției memchr(), utilizată pentru a căuta un caracter într-un array. Spre deosebire de vechea variantă, care utiliza compararea pe byte-uri, implementarea propusă este construită având în vedere utilizarea completă a registrelor CPU de 64 și 32 de biți. În loc de byte-uri, compararea se face folosind cuvinte mașină, ceea ce permite compararea a cel puțin 4 byte-uri dintr-o dată.

Atunci când se caută în șiruri mari, noua variantă s-a dovedit a fi de aproximativ 4 ori mai rapidă decât vechea (de exemplu, pentru șiruri de 1000 de caractere). Pentru șiruri de dimensiuni mici, eficiența noii implementări nu este atât de semnificativă, dar este totuși mai mare comparativ cu varianta inițială. În nucleul Linux, dimensiunea șirurilor procesate în memchr() ajunge la 512 byte-uri. Creșterea performanței pentru șirurile de 512 byte-uri, în situația în care caracterul căutat se află la sfârșitul șirului, este de 20%.

Testarea nucleului 5.18 cu noua variantă de „memchr()” pentru arhitecturi de 32 și 64 de biți nu a identificat probleme. Creșterea generală a performanței subsistemelor nucleului utilizând varianta optimizată de „memchr()” nu a fost evaluată încă, fiind analizată și fezabilitatea înlocuirii implementării (în codul nucleului, apelul funcției memchr() apare de 129 de ori, inclusiv în codul driverelor și sistemelor de fișiere).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster