Ang pagpapatupad ng memchr function ay iminungkahi para sa Linux kernel, tumatakbo nang hanggang 4 na beses na mas mabilis

Isang set ng mga patch na may na-optimize na pagpapatupad ng memchr() function, na ginamit upang maghanap ng simbolo sa isang array, ay iminungkahi para sa pagsasama sa Linux kernel. Hindi tulad ng lumang bersyon, na gumamit ng byte-by-byte na paghahambing, ang iminungkahing pagpapatupad ay binuo na isinasaalang-alang ang buong paggamit ng 64- at 32-bit na mga rehistro ng CPU. Sa halip na mga byte, ang paghahambing ay ginagawa gamit ang mga machine word, na nagbibigay-daan sa hindi bababa sa 4 na byte na maihambing sa isang pagkakataon.

Kapag naghahanap sa malalaking string, ang bagong opsyon ay naging 4 na beses na mas mabilis kaysa sa luma (halimbawa, para sa mga string na 1000 character). Para sa maliliit na string, ang kahusayan ng bagong pagpapatupad ay hindi gaanong makabuluhan, ngunit mas mataas pa rin kumpara sa orihinal na bersyon. Sa Linux kernel, ang laki ng mga string na naproseso sa memchr() ay umaabot sa 512 bytes. Ang performance gain para sa 512 byte string, sa isang sitwasyon kung saan ang hinanap na character ay nasa dulo ng string, ay 20%.

Ang pagsubok sa 5.18 kernel gamit ang bagong opsyon na "memchr()" para sa 32-bit at 64-bit na mga arkitektura ay hindi nagpahayag ng anumang mga problema. Ang kabuuang performance gain ng mga kernel subsystem kapag ginagamit ang na-optimize na bersyon ng “memchr()” ay hindi pa natatasa, at hindi pa nasusuri ang posibilidad na palitan ang pagpapatupad (sa kernel code, ang mga tawag sa memchr() function ay nagaganap nang 129 beses , kasama sa code ng mga driver at file system).

Pinagmulan: opennet.ru

Magdagdag ng komento