'n Implementering van die memchr-funksie is voorgestel vir die Linux-kern, wat tot 4 keer vinniger loop

'n Stel pleisters met 'n geoptimaliseerde implementering van die memchr()-funksie, wat gebruik word om na 'n simbool in 'n skikking te soek, is voorgestel vir insluiting in die Linux-kern. Anders as die ou weergawe, wat greep-vir-greep-vergelyking gebruik het, is die voorgestelde implementering gebou met inagneming van die volle gebruik van 64- en 32-bis SVE-registers. In plaas van grepe, word die vergelyking uitgevoer met behulp van masjienwoorde, wat toelaat dat ten minste 4 grepe op 'n slag vergelyk kan word.

As u in groot stringe gesoek het, het die nuwe opsie ongeveer 4 keer vinniger geblyk te wees as die ou een (byvoorbeeld vir stringe van 1000 karakters). Vir klein stringe is die doeltreffendheid van die nuwe implementering nie so beduidend nie, maar is steeds hoër in vergelyking met die oorspronklike weergawe. In die Linux-kern bereik die grootte van stringe wat in memchr() verwerk word 512 grepe. Die prestasiewins vir 512 grepe-stringe, in 'n situasie waar die gesoekte karakter aan die einde van die string is, is 20%.

Die toets van die 5.18-kern met die nuwe "memchr()"-opsie vir 32-bis en 64-bis argitekture het geen probleme geopenbaar nie. Die algehele prestasiewins van kernsubstelsels wanneer die geoptimaliseerde weergawe van "memchr()" gebruik word, is nog nie geassesseer nie, en die haalbaarheid om die implementering te vervang is ook nie ontleed nie (in die kernkode vind oproepe na die memchr()-funksie 129 keer plaas , insluitend in die kode van drywers en lêerstelsels).

Bron: opennet.ru

Voeg 'n opmerking