मेरे पास एक ऐसा फ़ंक्शन है जो स्ट्रिंग के माध्यम से पैटर्न की तलाश कर रहा है और इसके कुछ हिस्सों को बदल रहा है। मैंस्ट्रिंग है। स्ट्रिंग में चार की सरणी के माध्यम से चलने से तेज() तेज है?
if (!text.Contains(pattern)) return;
डालने से अनुकूलित कर सकता है लेकिन, मैं वास्तव में पूरी स्ट्रिंग के माध्यम से चल रहा हूँ और पैटर्न के साथ इसके कुछ हिस्सों की तुलना करें, तो सवाल यह है कि String.Contains()
वास्तव में काम करता है, है? मुझे पता है कि ऐसा कोई सवाल था - How does String.Contains work? लेकिन जवाब बल्कि अस्पष्ट है। इसलिए, यदि String.Contains()
वर्णों की पूरी सरणी के माध्यम से चलता है और उन्हें पैटर्न के साथ तुलना करता है, तो मैं भी इसके लिए खोज रहा हूं, यह वास्तव में मेरे कार्य को तेज़ नहीं करेगा, बल्कि धीमा होगा।
तो, क्या इस तरह के अनुकूलन का प्रयास करना एक अच्छा विचार है? और - क्या String.Contains()
के लिए यह संभव है कि फ़ंक्शन से भी तेज हो जो केवल पूरे सरणी के माध्यम से चलें और प्रत्येक निरंतर एक के साथ प्रत्येक चरित्र की तुलना करें?
यहाँ कोड है:
public static char colorchar = (char)3;
public static Client.RichTBox.ContentText color(string text, Client.RichTBox SBAB)
{
if (text.Contains(colorchar.ToString()))
{
int color = 0;
bool closed = false;
int position = 0;
while (text.Length > position)
{
if (text[position] == colorchar)
{
if (closed)
{
text = text.Substring(position, text.Length - position);
Client.RichTBox.ContentText Link = new Client.RichTBox.ContentText(ProtocolIrc.decode_text(text), SBAB, Configuration.CurrentSkin.mrcl[color]);
return Link;
}
if (!closed)
{
if (!int.TryParse(text[position + 1].ToString() + text[position + 2].ToString(), out color))
{
if (!int.TryParse(text[position + 1].ToString(), out color))
{
color = 0;
}
}
if (color > 9)
{
text = text.Remove(position, 3);
}
else
{
text = text.Remove(position, 2);
}
closed = true;
if (color < 16)
{
text = text.Substring(position);
break;
}
}
}
position++;
}
}
return null;
}
आपको शेष कोड (एक रूपरेखा) पोस्ट करना होगा। लेकिन हाँ, सबसे अधिक संभावना है कि आप यहां दोहरे काम कर रहे हैं। –
आप लूप में दोनों दृष्टिकोण क्यों नहीं देखते हैं? – Habib
@ हाबीब यह बुरा विचार नहीं है :) – Petr