public void PerfTestWithSlowTokenizerAndLargeQuery() { ITokenizer tokenizer = new SimpleRegexTokenizer(); string query = @"MATCH app = 'MyTestApp' AND ex IN ('System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException') AND sf = 'sadsdfsdfsdfsdfssdfjhsfjhsdfjhsdfjhsdfjhsdjfhsdjhfsdjfhsdhfsdjhfsdjhfjsdhfjsdhfjhsdjfhsdjfh' AND sf = 'fggdfgdfgfdgdfgdfgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggh' AND sf = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' AND sf = 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' AND sf = 'ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' AND sf = 'ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd' AND sf = '1eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' AND sf = '2sadsdfsdfsdfsdfssdfjhsfjhsdfjhsdfjhsdfjhsdjfhsdjhfsdjfhsdhfsdjhfsdjhfjsdhfjsdhfjhsdjfhsdjfh' AND sf = '3fggdfgdfgfdgdfgdfgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggh' AND sf = '4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' AND sf = '5bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' AND sf = '6ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' AND sf = '7ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd' AND sf = '8eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' AND ex IN ('System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException') AND ex IN ('System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException') AND ex IN ('System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException','System.NullReferenceException', 'System.FormatException') BETWEEN 2016-01-01 00:00:00 AND 2016-02-01 00:00:00 LIMIT 100"; PerfTest(tokenizer, query, "Slow tokenizer + large query"); }
public void PerfTestWithSlowTokenizerAndSmallQuery() { ITokenizer tokenizer = new SimpleRegexTokenizer(); string query = @"MATCH app = 'MyTestApp' AND ex IN ('System.NullReferenceException', 'System.FormatException') BETWEEN 2016-01-01 00:00:00 AND 2016-02-01 00:00:00 LIMIT 100"; PerfTest(tokenizer, query, "Slow tokenizer + small query"); }
public static MethodData Parse(string expression) { var tokenizer = new SimpleRegexTokenizer(); var tokens = tokenizer.Tokenize(expression); foreach (var token in tokens) { Console.WriteLine($"{token.TokenType}:{token.Value}"); } return(MethodExtract.Parse(tokens)); }
public void Run() { while (true) { Console.WriteLine("Press 1 : view inefficient version output"); Console.WriteLine("Press 2 : Perf test of inefficient tokenizer with a small query"); Console.WriteLine("Press 3 : Perf test of inefficient tokenizer with a large query"); Console.WriteLine("Press 4 : view more efficient version output"); Console.WriteLine("Press 5 : Perf test of more efficient tokenizer with a small query"); Console.WriteLine("Press 6 : Perf test of more efficient tokenizer with a large query"); var key = Console.ReadKey(); Console.WriteLine(""); switch (key.KeyChar.ToString()) { case "1": ITokenizer slowTokenizer = new SimpleRegexTokenizer(); RunOnceAndPrintOutput(slowTokenizer, "Run with inefficient tokenizer"); break; case "2": PerfTestWithSlowTokenizerAndSmallQuery(); break; case "3": PerfTestWithSlowTokenizerAndLargeQuery(); break; case "4": ITokenizer fastTokenizer = new PrecedenceBasedRegexTokenizer(); RunOnceAndPrintOutput(fastTokenizer, "Run with faster tokenizer"); break; case "5": PerfTestWithFastTokenizerAndSmallQuery(); break; case "6": PerfTestWithFastTokenizerAndLargeQuery(); break; default: Console.WriteLine("Press 1, 2, 3, 4, 5 or 6"); break; } Console.WriteLine(""); } }