அவர்கள் லினக்ஸ் கர்னலில் memchr ஐ விட 4 மடங்கு வேகமாக செயல்படுத்த முன்மொழிந்தனர்.

சமீபத்தில் லினக்ஸ் கர்னலுக்கான முன்மொழிவு வெளியிடப்பட்டது, இதில் a உடன் இணைப்புகளின் தொகுப்பைச் சேர்க்க முன்மொழியப்பட்டது memchr() செயல்பாட்டின் உகந்த செயலாக்கம் ஒரு வரிசையில் ஒரு எழுத்தைத் தேடப் பயன்படுகிறது.

memchr() செயல்பாடு c இன் முதல் நிகழ்வாக s ஆல் சுட்டிக்காட்டப்பட்ட நினைவகப் பகுதியின் முன்னணி n பைட்டுகளை ஸ்கேன் செய்கிறது. s மூலம் சுட்டிக்காட்டப்பட்ட நினைவகப் பகுதியில் உள்ள c மற்றும் பைட்டுகள் இரண்டும் கையொப்பமிடப்படாத எழுத்துக்களாக விளக்கப்படுகின்றன.

திட்டம் வாக்குறுதிகளை வேகமாக இருக்கும் நினைவகத் தொகுதிக்குள் ஒரு எழுத்தைக் கண்டறிய. டெவலப்பர் சோதனைகளில், பெரிய தேடல்களில் புதிய செயலாக்கம் கிட்டத்தட்ட நான்கு மடங்கு வேகமாக இருக்கும்

முந்தைய பதிப்பைப் போலல்லாமல், இது பைட்-பை-பைட் ஒப்பீட்டைப் பயன்படுத்தியது, முன்மொழியப்பட்ட செயல்படுத்தல் 64-பிட் மற்றும் 32-பிட் CPU பதிவேடுகளின் முழு பயன்பாட்டைக் கருத்தில் கொண்டு உருவாக்கப்பட்டது. பைட்டுகளுக்குப் பதிலாக, இயந்திர வார்த்தைகளைப் பயன்படுத்தி ஒப்பீடு செய்யப்படுகிறது, இது ஒரு நேரத்தில் குறைந்தது 4 பைட்டுகளை ஒப்பிட அனுமதிக்கிறது.

இந்தத் தொடர் இணைப்புகள் "memchr()" மேம்படுத்தப்பட்டு, மேக்ரோவைச் சேர்த்தது
"memchr_inv()" அதனால் இரண்டு செயல்பாடுகளும் பிட்மாஸ்க்கை உருவாக்க இதைப் பயன்படுத்தலாம்.

"memchr()" இன் அசல் செயல்படுத்தல் பைட் ஒப்பீட்டை அடிப்படையாகக் கொண்டது,
இது CPU இல் 64 அல்லது 32 பிட் பதிவேட்டை முழுமையாகப் பயன்படுத்தாது. நாங்கள் செயல்படுத்துகிறோம் a
குறைந்தபட்சம் 4 பைட்டுகளை ஒரே மாதிரியாக ஒப்பிடும் வகையில் சொற்களின் மூலம் ஒப்பிடலாம்
வானிலை. மேம்படுத்தப்பட்ட memchr() அசலை விட 4 மடங்கு வேகமாக உள்ளது
நீண்ட சங்கிலிகளுக்கு. லினக்ஸ் கர்னலில், சரத்தின் நீளம் இருப்பதைக் காண்கிறோம்
"memchr()" மூலம் தேடினால் இயக்கிகள்/misc/lkdtm/heap.c இல் 512 பைட்டுகள் வரை இருக்கும்.

பெரிய சரங்களில் தேடும்போது, புதிய பதிப்பு பழையதை விட 4 மடங்கு வேகமாக இருந்தது (உதாரணமாக, 1000 எழுத்துகள் கொண்ட சரங்களுக்கு). சிறிய சங்கிலிகளுக்கு, புதிய செயலாக்கத்தின் செயல்திறன் குறிப்பிடத்தக்கதாக இல்லை, ஆனால் அசல் பதிப்பை விட இது இன்னும் அதிகமாக உள்ளது.

புதிய திட்டத்தைப் பற்றிய சுவாரஸ்யமான விஷயம் என்னவென்றால், பெரிய சங்கிலிகளுக்கான முன்னேற்றம், இது நேரத்தை கணிசமாக மேம்படுத்துகிறது. லினக்ஸ் கர்னலில், இது குறிப்பிடத் தக்கது. memchr() இல் செயலாக்கப்பட்ட சரங்களின் அளவு 512 பைட்டுகளை அடைகிறது. எங்கள் சோதனைகளில், 512-பைட் சரங்களுக்கான செயல்திறன் ஆதாயம், ஒரு சூழ்நிலையில் தேடல் எழுத்து சரத்தின் முடிவில் உள்ளது, இது 20% ஆகும்.

64-பிட் அல்லது 32-பிட் CPU இல் உள்ள பதிவேடுகளை முழுமையாகப் பயன்படுத்தாத பைட் வாரியான ஒப்பீட்டு நுட்பத்துடன் memchr() இன் அசல் பதிப்பு செயல்படுத்தப்பட்டது என்பது குறிப்பிடத்தக்கது.

CPU இல் ஒரே நேரத்தில் 8 எழுத்துக்களை ஒப்பிடும் வகையில் முழு வார்த்தை ஒப்பீட்டைப் பயன்படுத்துகிறோம். இந்த குறியீடு டேவிட் லைட்டின் செயலாக்கத்தை அடிப்படையாகக் கொண்டது.

முதல் கோப்பின் செயல்திறனை அளவிட இரண்டு கோப்புகளை உருவாக்குகிறோம் இலக்கு எழுத்துக்கு முன்னால் சராசரியாக 10 எழுத்துகள் உள்ளன. இரண்டாவது கோப்பில் குறைந்தது 1000 எழுத்துகள் இருக்கும் இலக்கு பாத்திரம்.

"memchr()" இன் எங்கள் செயல்படுத்தல் சிறிது முதல் சோதனையில் சிறந்தது மற்றும் அசலை விட கிட்டத்தட்ட 4 மடங்கு வேகமானது இரண்டாவது சோதனையில் செயல்படுத்தல்.

5.18-பிட் மற்றும் 32-பிட் கட்டமைப்புகளுக்கான புதிய "memchr()" மாறுபாட்டுடன் கர்னல் 64 சோதனை எந்த பிரச்சனையையும் வெளிப்படுத்தவில்லை.

p ஆனது 8 (அல்லது 4 பிட் இலக்குகளில் 32) பைட் சீரமைக்கப்படவில்லை என்றால் என்ன நடக்கும்? அனைத்து இலக்குகளும் சீரமைக்கப்படாத (திறமையான) சுமைகளை ஆதரிக்கவில்லை, இல்லையா?
 p 8 அல்லது 4 பைட் சீரமைக்கப்படவில்லை என்றால் அது வேலை செய்யும் என்று நினைக்கிறேன். சரம் 10 பைட்டுகள் என்று வைத்துக் கொள்வோம். இங்கே ஃபார் லூப் முதல் 8 பைட்டுகளைத் தேடும். இலக்கு எழுத்து கடைசி 2 பைட்டுகளில் இருந்தால், இரண்டாவது லூப் அதைக் கண்டுபிடிக்கும். இது 32-பிட் கணினிகளிலும் இதுபோல் செயல்படுகிறது.

ஒட்டுமொத்த செயல்திறன் ஆதாயம் இன்னும் மதிப்பிடப்படவில்லை மேம்படுத்தப்பட்ட "memchr()" மாறுபாட்டைப் பயன்படுத்தும் போது கர்னல் துணை அமைப்புகளின், அல்லது செயல்படுத்தலை மேலெழுதலாமா என்பது பற்றி விவாதிக்கப்படவில்லை (memchr() செயல்பாடு அழைப்பு கர்னல் குறியீட்டில் 129 முறை, இயக்கிகள் மற்றும் கோப்பு முறைமைகள் உட்பட).

இறுதியாக இதைப் பற்றி மேலும் அறிய நீங்கள் ஆர்வமாக இருந்தால், நீங்கள் விவரங்களை சரிபார்க்கலாம் பின்வரும் இணைப்பில்.


உங்கள் கருத்தை தெரிவிக்கவும்

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்பட்ட முடியாது. தேவையான புலங்கள் குறிக்கப்பட்டிருக்கும் *

*

*

  1. தரவுக்கு பொறுப்பு: மிகுவல் ஏஞ்சல் கேடன்
  2. தரவின் நோக்கம்: கட்டுப்பாட்டு ஸ்பேம், கருத்து மேலாண்மை.
  3. சட்டபூர்வமாக்கல்: உங்கள் ஒப்புதல்
  4. தரவின் தொடர்பு: சட்டபூர்வமான கடமையால் தவிர மூன்றாம் தரப்பினருக்கு தரவு தெரிவிக்கப்படாது.
  5. தரவு சேமிப்பு: ஆக்சென்டஸ் நெட்வொர்க்குகள் (EU) வழங்கிய தரவுத்தளம்
  6. உரிமைகள்: எந்த நேரத்திலும் உங்கள் தகவல்களை நீங்கள் கட்டுப்படுத்தலாம், மீட்டெடுக்கலாம் மற்றும் நீக்கலாம்.