Efektivigo de la memchr-funkcio estis proponita por la Linukso-kerno, funkciante ĝis 4 fojojn pli rapide

Aro de pecetoj kun optimumigita efektivigo de la memchr() funkcio, uzata por serĉi simbolon en tabelo, estis proponita por inkludo en la Linukso-kerno. Male al la malnova versio, kiu uzis bajton-post-bajtan komparon, la proponita efektivigo estas konstruita konsiderante la plenan uzon de 64- kaj 32-bitaj CPU-registroj. Anstataŭ bajtoj, la komparo estas farita per maŝinvortoj, kio permesas kompari almenaŭ 4 bajtojn samtempe.

Serĉante en grandaj ŝnuroj, la nova opcio montriĝis proksimume 4 fojojn pli rapida ol la malnova (ekzemple, por ŝnuroj de 1000 signoj). Por malgrandaj ŝnuroj, la efikeco de la nova efektivigo ne estas tiel signifa, sed ankoraŭ estas pli alta kompare kun la originala versio. En la Linukso-kerno, la grandeco de ĉenoj prilaboritaj en memchr() atingas 512 bajtojn. La rendimentogajno por 512 bajtaj ĉenoj, en situacio kie la serĉita signo estas ĉe la fino de la ĉeno, estas 20%.

Testado de la 5.18-kerno kun la nova opcio "memchr()" por 32-bitaj kaj 64-bitaj arkitekturoj ne malkaŝis problemojn. La ĝenerala rendimentogajno de kernaj subsistemoj dum uzado de la optimumigita versio de "memchr()" ankoraŭ ne estis taksita, nek la farebleco de anstataŭigi la efektivigon estis analizita (en la kernkodo, vokoj al la memchr() funkcio okazas 129 fojojn. , inkluzive en la kodo de ŝoforoj kaj dosiersistemoj).

fonto: opennet.ru

Aldoni komenton