Linuxi tuuma sisaldusse on ettepanek teha optimeeritud memchr() funktsiooni teostus, mis on mĂ”eldud sĂŒmbolite otsimiseks massiivis. Erinevalt vanast variandist, kus kasutati baitide vĂ”rdlemist, on pakutud teostus ĂŒles ehitatud nii, et kasutatakse tĂ€ielikult Ă€ra 64- ja 32-bitiseid CPU registreid. Selle asemel, et vĂ”rrelda baite, toimub vĂ”rdlemine masinsĂ”nadega, mis vĂ”imaldab korraga vĂ”rrelda vĂ€hemalt 4 baiti.
Suurtes stringides on uus variant vanast umbes 4 korda kiirem (nĂ€iteks 1000 tĂ€hte sisaldavate stringide puhul). VĂ€ikeste stringide korral ei ole uue teostuse efektiivsus nii mĂ€rkimisvÀÀrne, kuid on ikkagi kĂ”rgem vĂ”rreldes algse variandiga. Linuxi tuumas ulatub memchr() töötlevate stringide suurus 512 baitini. 512 baitiste stringide puhul, kui otsitav sĂŒmbol asub stringi lĂ”pus, on jĂ”udluse tĂ”us 20%.
Kernel 5.18 testimine uue memchr() variandi jaoks 32- ja 64-bitistes arhitektuurides ei tuvastanud mingeid probleeme. Tuuma alamsĂŒsteemide ĂŒldine jĂ”udluse tĂ”us optimeeritud memchr() variandi kasutamise tĂ”ttu ei ole veel hinnatud, samuti ei ole analĂŒĂŒsitud teostatuse asendamise otstarbekust (tuuma koodis on memchr() funktsiooni kutse 129 korda, sealhulgas draiverite ja failisĂŒsteemide koodis).
Allikas: opennet.ru
