@@ -10,69 +10,39 @@ order variants by execution time by Anthony Lloyd
1010using System . Text . RegularExpressions ;
1111using System . Threading . Tasks ;
1212
13- public static partial class regexredux
13+ public static partial class RegexRedux
1414{
15- const RegexOptions opt = RegexOptions . Compiled ;
16-
17- static regexredux ( )
18- {
19- Regex . CacheSize = 1024 ;
20- }
21-
22- [ GeneratedRegex ( @">.*\n|\n" , opt ) ]
15+ [ GeneratedRegex ( @">.*\n|\n" ) ]
2316 public static partial Regex ReplaceRegex ( ) ;
24-
25- [ GeneratedRegex ( @"tHa[Nt]" , opt ) ]
17+ [ GeneratedRegex ( @"tHa[Nt]" ) ]
2618 public static partial Regex MagicRe1 ( ) ;
27-
28- [ GeneratedRegex ( @"aND|caN|Ha[DS]|WaS" , opt ) ]
19+ [ GeneratedRegex ( @"aND|caN|Ha[DS]|WaS" ) ]
2920 public static partial Regex MagicRe2 ( ) ;
30-
31- [ GeneratedRegex ( @"a[NSt]|BY" , opt ) ]
21+ [ GeneratedRegex ( @"a[NSt]|BY" ) ]
3222 public static partial Regex MagicRe3 ( ) ;
33-
34- [ GeneratedRegex ( @"<[^>]*>" , opt ) ]
23+ [ GeneratedRegex ( @"<[^>]*>" ) ]
3524 public static partial Regex MagicRe4 ( ) ;
36-
37- [ GeneratedRegex ( @"\|[^|][^|]*\|" , opt ) ]
25+ [ GeneratedRegex ( @"\|[^|][^|]*\|" ) ]
3826 public static partial Regex MagicRe5 ( ) ;
39-
40- // var variant2 = Task.Run(() => regexCount(sequences, "[cgt]gggtaaa|tttaccc[acg]"));
41- [ GeneratedRegex ( @"[cgt]gggtaaa|tttaccc[acg]" , opt ) ]
27+ [ GeneratedRegex ( @"[cgt]gggtaaa|tttaccc[acg]" ) ]
4228 public static partial Regex Re2 ( ) ;
43- // var variant3 = Task.Run(() => regexCount(sequences, "a[act]ggtaaa|tttacc[agt]t"));
44- [ GeneratedRegex ( @"a[act]ggtaaa|tttacc[agt]t" , opt ) ]
29+ [ GeneratedRegex ( @"a[act]ggtaaa|tttacc[agt]t" ) ]
4530 public static partial Regex Re3 ( ) ;
46- // var variant7 = Task.Run(() => regexCount(sequences, "agggt[cgt]aa|tt[acg]accct"));
47- [ GeneratedRegex ( @"agggt[cgt]aa|tt[acg]accct" , opt ) ]
31+ [ GeneratedRegex ( @"agggt[cgt]aa|tt[acg]accct" ) ]
4832 public static partial Regex Re7 ( ) ;
49- // var variant6 = Task.Run(() => regexCount(sequences, "aggg[acg]aaa|ttt[cgt]ccct"));
50- [ GeneratedRegex ( @"aggg[acg]aaa|ttt[cgt]ccct" , opt ) ]
33+ [ GeneratedRegex ( @"aggg[acg]aaa|ttt[cgt]ccct" ) ]
5134 public static partial Regex Re6 ( ) ;
52- // var variant4 = Task.Run(() => regexCount(sequences, "ag[act]gtaaa|tttac[agt]ct"));
53- [ GeneratedRegex ( @"ag[act]gtaaa|tttac[agt]ct" , opt ) ]
35+ [ GeneratedRegex ( @"ag[act]gtaaa|tttac[agt]ct" ) ]
5436 public static partial Regex Re4 ( ) ;
55- // var variant5 = Task.Run(() => regexCount(sequences, "agg[act]taaa|ttta[agt]cct"));
56- [ GeneratedRegex ( @"agg[act]taaa|ttta[agt]cct" , opt ) ]
37+ [ GeneratedRegex ( @"agg[act]taaa|ttta[agt]cct" ) ]
5738 public static partial Regex Re5 ( ) ;
58- // var variant1 = Task.Run(() => regexCount(sequences, "agggtaaa|tttaccct"));
59- [ GeneratedRegex ( @"agggtaaa|tttaccct" , opt ) ]
39+ [ GeneratedRegex ( @"agggtaaa|tttaccct" ) ]
6040 public static partial Regex Re1 ( ) ;
61- // var variant9 = Task.Run(() => regexCount(sequences, "agggtaa[cgt]|[acg]ttaccct"));
62- [ GeneratedRegex ( @"agggtaa[cgt]|[acg]ttaccct" , opt ) ]
41+ [ GeneratedRegex ( @"agggtaa[cgt]|[acg]ttaccct" ) ]
6342 public static partial Regex Re9 ( ) ;
64- // var variant8 = Task.Run(() => regexCount(sequences, "agggta[cgt]a|t[acg]taccct"));
65- [ GeneratedRegex ( @"agggta[cgt]a|t[acg]taccct" , opt ) ]
43+ [ GeneratedRegex ( @"agggta[cgt]a|t[acg]taccct" ) ]
6644 public static partial Regex Re8 ( ) ;
6745
68- static string regexCount ( string s , Regex r )
69- {
70- int c = 0 ;
71- var m = r . Match ( s ) ;
72- while ( m . Success ) { c ++ ; m = m . NextMatch ( ) ; }
73- return r + " " + c ;
74- }
75-
7646 public static async Task Main ( string [ ] args )
7747 {
7848 var fileName = args . Length > 0 ? args [ 0 ] : "25000_in" ;
@@ -90,25 +60,25 @@ public static async Task Main(string[] args)
9060 return newseq . Length ;
9161 } ;
9262
93- var variant2 = ( ) => regexCount ( sequences , Re2 ( ) ) ;
94- var variant3 = ( ) => regexCount ( sequences , Re3 ( ) ) ;
95- var variant7 = ( ) => regexCount ( sequences , Re7 ( ) ) ;
96- var variant6 = ( ) => regexCount ( sequences , Re6 ( ) ) ;
97- var variant4 = ( ) => regexCount ( sequences , Re4 ( ) ) ;
98- var variant5 = ( ) => regexCount ( sequences , Re5 ( ) ) ;
99- var variant1 = ( ) => regexCount ( sequences , Re1 ( ) ) ;
100- var variant9 = ( ) => regexCount ( sequences , Re9 ( ) ) ;
101- var variant8 = ( ) => regexCount ( sequences , Re8 ( ) ) ;
63+ var variant2 = "[cgt]gggtaaa|tttaccc[acg] " + Re2 ( ) . Count ( sequences ) ;
64+ var variant3 = "a[act]ggtaaa|tttacc[agt]t " + Re3 ( ) . Count ( sequences ) ;
65+ var variant7 = "agggt[cgt]aa|tt[acg]accct " + Re7 ( ) . Count ( sequences ) ;
66+ var variant6 = "aggg[acg]aaa|ttt[cgt]ccct " + Re6 ( ) . Count ( sequences ) ;
67+ var variant4 = "ag[act]gtaaa|tttac[agt]ct " + Re4 ( ) . Count ( sequences ) ;
68+ var variant5 = "agg[act]taaa|ttta[agt]cct " + Re5 ( ) . Count ( sequences ) ;
69+ var variant1 = "agggtaaa|tttaccct " + Re1 ( ) . Count ( sequences ) ;
70+ var variant9 = "agggtaa[cgt]|[acg]ttaccct " + Re9 ( ) . Count ( sequences ) ;
71+ var variant8 = "agggta[cgt]a|t[acg]taccct " + Re8 ( ) . Count ( sequences ) ;
10272
103- Console . WriteLine ( variant1 ( ) ) ;
104- Console . WriteLine ( variant2 ( ) ) ;
105- Console . WriteLine ( variant3 ( ) ) ;
106- Console . WriteLine ( variant4 ( ) ) ;
107- Console . WriteLine ( variant5 ( ) ) ;
108- Console . WriteLine ( variant6 ( ) ) ;
109- Console . WriteLine ( variant7 ( ) ) ;
110- Console . WriteLine ( variant8 ( ) ) ;
111- Console . WriteLine ( variant9 ( ) ) ;
73+ Console . WriteLine ( variant1 ) ;
74+ Console . WriteLine ( variant2 ) ;
75+ Console . WriteLine ( variant3 ) ;
76+ Console . WriteLine ( variant4 ) ;
77+ Console . WriteLine ( variant5 ) ;
78+ Console . WriteLine ( variant6 ) ;
79+ Console . WriteLine ( variant7 ) ;
80+ Console . WriteLine ( variant8 ) ;
81+ Console . WriteLine ( variant9 ) ;
11282 Console . WriteLine ( $ "\n { initialLength } \n { sequences . Length } ") ;
11383 Console . WriteLine ( magicTask ( ) . ToString ( ) ) ;
11484 }
0 commit comments