ලිනක්ස් කර්නලය සඳහා memchr ශ්‍රිතය ක්‍රියාත්මක කිරීම යෝජනා කර ඇත, එය 4 ගුණයක් වේගයෙන් ක්‍රියාත්මක වේ.

අරාවක සංකේතයක් සෙවීමට භාවිතා කරන, memchr() ශ්‍රිතයේ ප්‍රශස්ත ක්‍රියාත්මක කිරීමක් සහිත පැච් කට්ටලයක් ලිනක්ස් කර්නලයට ඇතුළත් කිරීම සඳහා යෝජනා කර ඇත. byte-by-byte සංසන්දනය භාවිතා කරන ලද පැරණි අනුවාදය මෙන් නොව, 64- සහ 32-bit CPU රෙජිස්ටර් වල සම්පූර්ණ භාවිතය සැලකිල්ලට ගනිමින් යෝජිත ක්‍රියාත්මක කිරීම ගොඩනගා ඇත. බයිට් වෙනුවට, සැසඳීම සිදු කරනු ලබන්නේ යන්ත්‍ර වචන භාවිතයෙන් වන අතර එමඟින් වරකට අවම වශයෙන් බයිට් 4ක්වත් සැසඳීමට ඉඩ සලසයි.

විශාල නූල් වල සෙවීමේදී, නව විකල්පය පැරණි එකට වඩා 4 ගුණයකින් වේගවත් විය (උදාහරණයක් ලෙස, අක්ෂර 1000 ක නූල් සඳහා). කුඩා නූල් සඳහා, නව ක්රියාත්මක කිරීමේ කාර්යක්ෂමතාව එතරම් වැදගත් නොවේ, නමුත් මුල් පිටපතට සාපේක්ෂව තවමත් ඉහළ ය. ලිනක්ස් කර්නලයේ, memchr() හි සැකසූ නූල්වල ප්‍රමාණය බයිට් 512 දක්වා ළඟා වේ. 512 byte strings සඳහා කාර්ය සාධන ලාභය, සෙවූ චරිතය තන්තුවේ අවසානයේ ඇති අවස්ථාවක, 20% කි.

5.18-bit සහ 32-bit ගෘහ නිර්මාණ ශිල්පය සඳහා නව "memchr()" විකල්පය සමඟ 64 කර්නලය පරීක්ෂා කිරීමෙන් කිසිදු ගැටළුවක් අනාවරණය නොවීය. “memchr()” හි ප්‍රශස්ත අනුවාදය භාවිතා කරන විට කර්නල් උප පද්ධතිවල සමස්ත කාර්ය සාධන ලාභය තවමත් තක්සේරු කර නොමැත, ක්‍රියාත්මක කිරීම ප්‍රතිස්ථාපනය කිරීමේ ශක්‍යතා විශ්ලේෂණය කර නොමැත (කර්නල් කේතයේ, memchr() ශ්‍රිතයට ඇමතුම් 129 වතාවක් සිදු වේ. , ධාවක සහ ගොනු පද්ධති කේතය ඇතුළුව).

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න