Utekelezaji wa chaguo za kukokotoa za memchr umependekezwa kwa kernel ya Linux, inayoendesha hadi mara 4 kwa kasi zaidi

Seti ya viraka vilivyo na utekelezaji ulioboreshwa wa chaguo za kukokotoa za memchr(), zinazotumiwa kutafuta alama katika mkusanyiko, zimependekezwa ili zijumuishwe kwenye kerneli ya Linux. Tofauti na toleo la zamani, ambalo lilitumia kulinganisha kwa byte-byte, utekelezaji uliopendekezwa umejengwa kwa kuzingatia matumizi kamili ya rejista za 64- na 32-bit CPU. Badala ya ka, kulinganisha hufanywa kwa kutumia maneno ya mashine, ambayo inaruhusu angalau ka 4 kulinganishwa kwa wakati mmoja.

Wakati wa kutafuta katika kamba kubwa, chaguo jipya liligeuka kuwa mara 4 kwa kasi zaidi kuliko ya zamani (kwa mfano, kwa kamba za wahusika 1000). Kwa masharti madogo, ufanisi wa utekelezaji mpya sio muhimu sana, lakini bado ni wa juu ikilinganishwa na toleo la awali. Kwenye kinu cha Linux, saizi ya kamba zilizochakatwa katika memchr() hufikia baiti 512. Faida ya utendaji kwa kamba 512 za byte, katika hali ambapo tabia iliyotafutwa iko mwisho wa kamba, ni 20%.

Kujaribu kernel 5.18 na chaguo jipya la "memchr()" kwa usanifu wa 32-bit na 64-bit hakukuonyesha matatizo yoyote. Faida ya jumla ya utendaji wa mifumo ndogo ya kernel wakati wa kutumia toleo lililoboreshwa la "memchr()" bado haijatathminiwa, na uwezekano wa kuchukua nafasi ya utekelezaji haujachanganuliwa (katika msimbo wa kernel, simu kwa memchr() chaguo la kukokotoa hufanyika mara 129. , ikiwa ni pamoja na katika kanuni za madereva na mifumo ya faili).

Chanzo: opennet.ru

Kuongeza maoni