eViL_oNe
30.08.2007, 09:25
ein kleiner eigener Test hat mir gezeigt, dass lookahead zumindest in .NET tatsächlich langsamer ist als capture groups -- wobei ich die Ergebnisse nicht auf jede Konstellation übertragen will *g*
class Program
{
private const string textToMatch =
"@param1,value1,@param2,value2,@param3,value3,@param4,value4,@param5,value5,@param6,value6,@param7,value7,@param8,value8,@param9,value9,@param10,value10,@param11,value11,@param12,value12,@param13,value13,@param14,value14,@param15,value15,@param16,value16,@param17,value17,@param18,value18,@param19,value19,@param20,value20,@param21,value21,@param22,value22,@param23,value23,@param24,value24,@param25,value25,@param26,value26,@param27,value27,@param28,value28,@param29,value29,@param30,value30,@param31,value31,@param32,value32,@param33,value33,@param34,value34,@param35,value35,@param36,value36,@param37,value37,@param38,value38,@param39,value39,@param40,value40,@param41,value41,@param42,value42,@param43,value43,@param44,value44,@param45,value45,@param46,value46,@param47,value47,@param48,value48,@param49,value49,@param50,value50,@param51,value51,@param52,value52,@param53,value53,@param54,value54,@param55,value55,@param56,value56,@param57,value57,@param58,value58,@param59,value59,@param60,value60,@param61,value61,@param62,value62,@param63,value63,@param64,value64,@param65,value65,@param66,value66,@param67,value67,@param68,value68,@param69,value69,@param70,value70" +
"@param1,value1,@param2,value2,@param3,value3,@param4,value4,@param5,value5,@param6,value6,@param7,value7,@param8,value8,@param9,value9,@param10,value10,@param11,value11,@param12,value12,@param13,value13,@param14,value14,@param15,value15,@param16,value16,@param17,value17,@param18,value18,@param19,value19,@param20,value20,@param21,value21,@param22,value22,@param23,value23,@param24,value24,@param25,value25,@param26,value26,@param27,value27,@param28,value28,@param29,value29,@param30,value30,@param31,value31,@param32,value32,@param33,value33,@param34,value34,@param35,value35,@param36,value36,@param37,value37,@param38,value38,@param39,value39,@param40,value40,@param41,value41,@param42,value42,@param43,value43,@param44,value44,@param45,value45,@param46,value46,@param47,value47,@param48,value48,@param49,value49,@param50,value50,@param51,value51,@param52,value52,@param53,value53,@param54,value54,@param55,value55,@param56,value56,@param57,value57,@param58,value58,@param59,value59,@param60,value60,@param61,value61,@param62,value62,@param63,value63,@param64,value64,@param65,value65,@param66,value66,@param67,value67,@param68,value68,@param69,value69,@param70,value70" +
"@param1,value1,@param2,value2,@param3,value3,@param4,value4,@param5,value5,@param6,value6,@param7,value7,@param8,value8,@param9,value9,@param10,value10,@param11,value11,@param12,value12,@param13,value13,@param14,value14,@param15,value15,@param16,value16,@param17,value17,@param18,value18,@param19,value19,@param20,value20,@param21,value21,@param22,value22,@param23,value23,@param24,value24,@param25,value25,@param26,value26,@param27,value27,@param28,value28,@param29,value29,@param30,value30,@param31,value31,@param32,value32,@param33,value33,@param34,value34,@param35,value35,@param36,value36,@param37,value37,@param38,value38,@param39,value39,@param40,value40,@param41,value41,@param42,value42,@param43,value43,@param44,value44,@param45,value45,@param46,value46,@param47,value47,@param48,value48,@param49,value49,@param50,value50,@param51,value51,@param52,value52,@param53,value53,@param54,value54,@param55,value55,@param56,value56,@param57,value57,@param58,value58,@param59,value59,@param60,value60,@param61,value61,@param62,value62,@param63,value63,@param64,value64,@param65,value65,@param66,value66,@param67,value67,@param68,value68,@param69,value69,@param70,value70" +
"@param1,value1,@param2,value2,@param3,value3,@param4,value4,@param5,value5,@param6,value6,@param7,value7,@param8,value8,@param9,value9,@param10,value10,@param11,value11,@param12,value12,@param13,value13,@param14,value14,@param15,value15,@param16,value16,@param17,value17,@param18,value18,@param19,value19,@param20,value20,@param21,value21,@param22,value22,@param23,value23,@param24,value24,@param25,value25,@param26,value26,@param27,value27,@param28,value28,@param29,value29,@param30,value30,@param31,value31,@param32,value32,@param33,value33,@param34,value34,@param35,value35,@param36,value36,@param37,value37,@param38,value38,@param39,value39,@param40,value40,@param41,value41,@param42,value42,@param43,value43,@param44,value44,@param45,value45,@param46,value46,@param47,value47,@param48,value48,@param49,value49,@param50,value50,@param51,value51,@param52,value52,@param53,value53,@param54,value54,@param55,value55,@param56,value56,@param57,value57,@param58,value58,@param59,value59,@param60,value60,@param61,value61,@param62,value62,@param63,value63,@param64,value64,@param65,value65,@param66,value66,@param67,value67,@param68,value68,@param69,value69,@param70,value70" +
"@param1,value1,@param2,value2,@param3,value3,@param4,value4,@param5,value5,@param6,value6,@param7,value7,@param8,value8,@param9,value9,@param10,value10,@param11,value11,@param12,value12,@param13,value13,@param14,value14,@param15,value15,@param16,value16,@param17,value17,@param18,value18,@param19,value19,@param20,value20,@param21,value21,@param22,value22,@param23,value23,@param24,value24,@param25,value25,@param26,value26,@param27,value27,@param28,value28,@param29,value29,@param30,value30,@param31,value31,@param32,value32,@param33,value33,@param34,value34,@param35,value35,@param36,value36,@param37,value37,@param38,value38,@param39,value39,@param40,value40,@param41,value41,@param42,value42,@param43,value43,@param44,value44,@param45,value45,@param46,value46,@param47,value47,@param48,value48,@param49,value49,@param50,value50,@param51,value51,@param52,value52,@param53,value53,@param54,value54,@param55,value55,@param56,value56,@param57,value57,@param58,value58,@param59,value59,@param60,value60,@param61,value61,@param62,value62,@param63,value63,@param64,value64,@param65,value65,@param66,value66,@param67,value67,@param68,value68,@param69,value69,@param70,value70" +
"@param1,value1,@param2,value2,@param3,value3,@param4,value4,@param5,value5,@param6,value6,@param7,value7,@param8,value8,@param9,value9,@param10,value10,@param11,value11,@param12,value12,@param13,value13,@param14,value14,@param15,value15,@param16,value16,@param17,value17,@param18,value18,@param19,value19,@param20,value20,@param21,value21,@param22,value22,@param23,value23,@param24,value24,@param25,value25,@param26,value26,@param27,value27,@param28,value28,@param29,value29,@param30,value30,@param31,value31,@param32,value32,@param33,value33,@param34,value34,@param35,value35,@param36,value36,@param37,value37,@param38,value38,@param39,value39,@param40,value40,@param41,value41,@param42,value42,@param43,value43,@param44,value44,@param45,value45,@param46,value46,@param47,value47,@param48,value48,@param49,value49,@param50,value50,@param51,value51,@param52,value52,@param53,value53,@param54,value54,@param55,value55,@param56,value56,@param57,value57,@param58,value58,@param59,value59,@param60,value60,@param61,value61,@param62,value62,@param63,value63,@param64,value64,@param65,value65,@param66,value66,@param67,value67,@param68,value68,@param69,value69,@param70,value70" +
"@param1,value1,@param2,value2,@param3,value3,@param4,value4,@param5,value5,@param6,value6,@param7,value7,@param8,value8,@param9,value9,@param10,value10,@param11,value11,@param12,value12,@param13,value13,@param14,value14,@param15,value15,@param16,value16,@param17,value17,@param18,value18,@param19,value19,@param20,value20,@param21,value21,@param22,value22,@param23,value23,@param24,value24,@param25,value25,@param26,value26,@param27,value27,@param28,value28,@param29,value29,@param30,value30,@param31,value31,@param32,value32,@param33,value33,@param34,value34,@param35,value35,@param36,value36,@param37,value37,@param38,value38,@param39,value39,@param40,value40,@param41,value41,@param42,value42,@param43,value43,@param44,value44,@param45,value45,@param46,value46,@param47,value47,@param48,value48,@param49,value49,@param50,value50,@param51,value51,@param52,value52,@param53,value53,@param54,value54,@param55,value55,@param56,value56,@param57,value57,@param58,value58,@param59,value59,@param60,value60,@param61,value61,@param62,value62,@param63,value63,@param64,value64,@param65,value65,@param66,value66,@param67,value67,@param68,value68,@param69,value69,@param70,value70" +
"@param1,value1,@param2,value2,@param3,value3,@param4,value4,@param5,value5,@param6,value6,@param7,value7,@param8,value8,@param9,value9,@param10,value10,@param11,value11,@param12,value12,@param13,value13,@param14,value14,@param15,value15,@param16,value16,@param17,value17,@param18,value18,@param19,value19,@param20,value20,@param21,value21,@param22,value22,@param23,value23,@param24,value24,@param25,value25,@param26,value26,@param27,value27,@param28,value28,@param29,value29,@param30,value30,@param31,value31,@param32,value32,@param33,value33,@param34,value34,@param35,value35,@param36,value36,@param37,value37,@param38,value38,@param39,value39,@param40,value40,@param41,value41,@param42,value42,@param43,value43,@param44,value44,@param45,value45,@param46,value46,@param47,value47,@param48,value48,@param49,value49,@param50,value50,@param51,value51,@param52,value52,@param53,value53,@param54,value54,@param55,value55,@param56,value56,@param57,value57,@param58,value58,@param59,value59,@param60,value60,@param61,value61,@param62,value62,@param63,value63,@param64,value64,@param65,value65,@param66,value66,@param67,value67,@param68,value68,@param69,value69,@param70,value70";
private static Regex lookAhead = new Regex("(?<=@)\\w+");
private static Regex groups = new Regex("@(\\w+)");
static void Main(string[] args)
{
DateTime start = DateTime.Now;
for (int i = 0; i < 1000; i++)
{
Test1();
}
Console.WriteLine("elapsed time look ahead: {0}", DateTime.Now - start);
DateTime start2 = DateTime.Now;
for (int i = 0; i < 1000; i++)
{
Test2();
}
Console.WriteLine("elapsed time groups: {0}", DateTime.Now - start2);
}
private static void Test2()
{
foreach (Match m in groups.Matches(textToMatch))
{
string matchedText = m.Groups[1].Value;
}
}
private static void Test1()
{
foreach (Match m in lookAhead.Matches(textToMatch))
{
string matchedText = m.Value;
}
}
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.