मैं कोड सीन पैट्रिक फ्लोयड से प्रेरित था और इसे अधिकतम प्रदर्शन के लिए थोड़ा फिर से लिखता हूं।
public static String stripNonDigitsV2( CharSequence input ) {
if (input == null)
return null;
if ( input.length() == 0 )
return "";
char[] result = new char[input.length()];
int cursor = 0;
CharBuffer buffer = CharBuffer.wrap( input );
while ( buffer.hasRemaining() ) {
char chr = buffer.get();
if ( chr > 47 && chr < 58 )
result[cursor++] = chr;
}
return new String( result, 0, cursor );
}
मैं न्यूनतम संख्या और परिणाम के साथ बहुत लंबे स्ट्रिंग के लिए प्रदर्शन परीक्षण करता हूं :
- मूल कोड 25,5% धीमा है
- अमरूद दृष्टिकोण 2.5-3 गुना धीमा है
- D + के साथ नियमित अभिव्यक्ति 3-3.5 गुना धीमी है
- केवल डी के साथ नियमित अभिव्यक्ति 25+ बार धीमी है
Btw यह निर्भर करता है कि स्ट्रिंग कितनी लंबी है। स्ट्रिंग के साथ जिसमें केवल 6 नंबर होता है, अमरूद 50% धीमा और रेगेक्सप 1 गुना धीमा होता है