శ్రేణిలో చిహ్నం కోసం శోధించడానికి ఉపయోగించే memchr() ఫంక్షన్ యొక్క ఆప్టిమైజ్ చేసిన అమలుతో కూడిన ప్యాచ్ల సమితి Linux కెర్నల్లో చేర్చడం కోసం ప్రతిపాదించబడింది. బైట్-బై-బైట్ పోలికను ఉపయోగించిన పాత సంస్కరణ వలె కాకుండా, ప్రతిపాదిత అమలు 64- మరియు 32-బిట్ CPU రిజిస్టర్ల పూర్తి వినియోగాన్ని పరిగణనలోకి తీసుకుని నిర్మించబడింది. బైట్లకు బదులుగా, పోలిక యంత్ర పదాలను ఉపయోగించి నిర్వహించబడుతుంది, ఇది ఒకేసారి కనీసం 4 బైట్లను పోల్చడానికి అనుమతిస్తుంది.
పెద్ద స్ట్రింగ్లలో శోధిస్తున్నప్పుడు, కొత్త ఎంపిక పాతదాని కంటే 4 రెట్లు వేగంగా ఉంటుంది (ఉదాహరణకు, 1000 అక్షరాల స్ట్రింగ్ల కోసం). చిన్న తీగలకు, కొత్త అమలు యొక్క సామర్థ్యం అంత ముఖ్యమైనది కాదు, కానీ అసలు సంస్కరణతో పోలిస్తే ఇప్పటికీ ఎక్కువగా ఉంటుంది. Linux కెర్నల్లో, memchr()లో ప్రాసెస్ చేయబడిన స్ట్రింగ్ల పరిమాణం 512 బైట్లకు చేరుకుంటుంది. శోధించిన అక్షరం స్ట్రింగ్ చివరిలో ఉన్న సందర్భంలో 512 బైట్ స్ట్రింగ్ల పనితీరు లాభం 20%.
5.18-బిట్ మరియు 32-బిట్ ఆర్కిటెక్చర్ల కోసం కొత్త "memchr()" ఎంపికతో 64 కెర్నల్ను పరీక్షించడం వల్ల ఎలాంటి సమస్యలు కనిపించలేదు. “memchr()” యొక్క ఆప్టిమైజ్ చేసిన సంస్కరణను ఉపయోగిస్తున్నప్పుడు కెర్నల్ సబ్సిస్టమ్ల యొక్క మొత్తం పనితీరు లాభం ఇంకా అంచనా వేయబడలేదు లేదా అమలును భర్తీ చేసే సాధ్యాసాధ్యాలు విశ్లేషించబడలేదు (కెర్నల్ కోడ్లో, memchr() ఫంక్షన్కి కాల్లు 129 సార్లు జరుగుతాయి , డ్రైవర్లు మరియు ఫైల్ సిస్టమ్స్ కోడ్తో సహా).
మూలం: opennet.ru