Ib qho kev siv ntawm memchr muaj nuj nqi tau thov rau Linux ntsiav, khiav mus txog 4 zaug sai dua

Ib txheej ntawm thaj ua rau thaj nrog rau kev ua kom zoo dua ntawm memchr() muaj nuj nqi, siv los tshawb nrhiav lub cim hauv ib qho array, tau thov kom suav nrog hauv Linux kernel. Tsis zoo li cov qub version, uas siv byte-by-byte kev sib piv, qhov kev npaj ua tiav yog tsim los ntawm kev siv tag nrho ntawm 64- thiab 32-ntsis CPU sau npe. Hloov ntawm bytes, kev sib piv yog ua los ntawm cov lus siv tshuab, uas tso cai rau tsawg kawg 4 bytes muab piv rau ib lub sijhawm.

Thaum tshawb nrhiav hauv cov hlua loj, qhov kev xaiv tshiab tau tshwm sim li 4 zaug sai dua li qub (piv txwv li, rau cov hlua ntawm 1000 cim). Rau cov hlua me me, qhov ua tau zoo ntawm kev siv tshiab tsis yog qhov tseem ceeb, tab sis tseem siab dua piv rau qhov qub version. Hauv Linux ntsiav, qhov loj ntawm cov hlua ua tiav hauv memchr() ncav cuag 512 bytes. Qhov kev ua tau zoo nce rau 512 byte cov hlua, nyob rau hauv qhov xwm txheej uas cov cim tshawb nrhiav nyob rau ntawm txoj hlua kawg, yog 20%.

Kev sim 5.18 ntsiav nrog qhov kev xaiv "memchr()" tshiab rau 32-ntsis thiab 64-ntsis architectures tsis qhia txog teeb meem. Qhov kev ua tau zoo tag nrho ntawm kernel subsystems thaum siv qhov optimized version ntawm "memchr()" tseem tsis tau raug soj ntsuam, thiab tsis muaj peev xwm hloov qhov kev siv tau txheeb xyuas (hauv kernel code, hu rau memchr() muaj nuj nqi tshwm sim 129 zaug. , nrog rau hauv cov cai ntawm cov tsav tsheb thiab cov ntaub ntawv systems).

Tau qhov twg los: opennet.ru

Ntxiv ib saib