Një zbatim i funksionit memchr është propozuar për kernelin Linux, i cili funksionon deri në 4 herë më shpejt

Një grup arnash me një implementim të optimizuar të funksionit memchr(), të përdorura për të kërkuar një simbol në një grup, është propozuar për t'u përfshirë në kernelin Linux. Ndryshe nga versioni i vjetër, i cili përdorte krahasimin byte-pas-byte, zbatimi i propozuar është ndërtuar duke marrë parasysh përdorimin e plotë të regjistrave të CPU-së 64- dhe 32-bit. Në vend të bajteve, krahasimi kryhet duke përdorur fjalë makinerike, gjë që lejon të paktën 4 bajt të krahasohen në të njëjtën kohë.

Kur kërkoni në vargje të mëdha, opsioni i ri doli të ishte rreth 4 herë më i shpejtë se ai i vjetër (për shembull, për vargjet me 1000 karaktere). Për vargjet e vogla, efikasiteti i zbatimit të ri nuk është aq i rëndësishëm, por është akoma më i lartë në krahasim me versionin origjinal. Në kernelin Linux, madhësia e vargjeve të përpunuara në memchr() arrin 512 bajt. Fitimi i performancës për vargjet 512 bajt, në një situatë ku karakteri i kërkuar është në fund të vargut, është 20%.

Testimi i kernelit 5.18 me opsionin e ri "memchr()" për arkitekturat 32-bit dhe 64-bit nuk zbuloi asnjë problem. Përfitimi i përgjithshëm i performancës së nënsistemeve të kernelit kur përdoret versioni i optimizuar i "memchr()" nuk është vlerësuar ende, as nuk është analizuar mundësia e zëvendësimit të zbatimit (në kodin e kernelit, thirrjet në funksionin memchr() ndodhin 129 herë , duke përfshirë kodin e drejtuesve dhe sistemeve të skedarëve).

Burimi: opennet.ru

Shto një koment