En implementering av memchr-funksjonen er foreslått for Linux-kjernen, som kjører opptil 4 ganger raskere

Et sett med patcher med en optimalisert implementering av memchr()-funksjonen, brukt til å søke etter et symbol i en matrise, har blitt foreslått for inkludering i Linux-kjernen. I motsetning til den gamle versjonen, som brukte byte-for-byte-sammenligning, er den foreslåtte implementeringen bygget med hensyn til full bruk av 64- og 32-bits CPU-registre. I stedet for byte utføres sammenligningen ved hjelp av maskinord, som gjør at minst 4 byte kan sammenlignes om gangen.

Når du søkte i store strenger, viste det seg at det nye alternativet var omtrent 4 ganger raskere enn det gamle (for eksempel for strenger på 1000 tegn). For små strenger er effektiviteten til den nye implementeringen ikke så betydelig, men er fortsatt høyere sammenlignet med den originale versjonen. I Linux-kjernen når størrelsen på strenger som behandles i memchr() 512 byte. Ytelsesgevinsten for 512 byte strenger, i en situasjon der det søkte tegnet er på slutten av strengen, er 20 %.

Testing av 5.18-kjernen med det nye "memchr()"-alternativet for 32-bit og 64-bit arkitektur avslørte ingen problemer. Den generelle ytelsesgevinsten til kjernedelsystemer ved bruk av den optimaliserte versjonen av "memchr()" er ennå ikke vurdert, og muligheten for å erstatte implementeringen er heller ikke analysert (i kjernekoden forekommer kall til memchr()-funksjonen 129 ganger , inkludert i koden for drivere og filsystemer).

Kilde: opennet.ru

Legg til en kommentar