1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | using System; using System.Linq; using System.Text; using System.Collections.Generic; public class Test { public static void Main() { Random rnd = new Random(123); StringBuilder sb = new StringBuilder(); string text = sb.ToString(); for (int i = 0; i < 1000000; i++) sb.Append((char)(rnd.Next(26) + 63)); text = sb.ToString(); double start, linqtime, dictionarytime; start = System.DateTime.Now.Ticks; var linq = text.GroupBy(c => c); foreach (var a in linq) { Console.WriteLine("{0} = {1}", a.Key, a.Count()); } linqtime = System.DateTime.Now.Ticks - start; start = System.DateTime.Now.Ticks; Dictionary<char, int> counts = new Dictionary<char, int>(); for (int i = 0; i < text.Length; i++) if (counts.ContainsKey(text[i])) counts[text[i]]++; else counts.Add(text[i], 1); foreach (var count in counts) Console.WriteLine("{0} = {1}", count.Key, count.Value); dictionarytime = System.DateTime.Now.Ticks - start; Console.WriteLine("LINQ time : {1}\nDictionary time : {2}\nLINQ is {0}% quicker" , dictionarytime/linqtime * 100 - 100, linqtime, dictionarytime); } } |
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQ7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCQlSYW5kb20gcm5kID0gbmV3IFJhbmRvbSgxMjMpOwoKCQkJU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CgoKCgkJCXN0cmluZyB0ZXh0ID0gc2IuVG9TdHJpbmcoKTsKCQkJZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwMDAwOyBpKyspIHNiLkFwcGVuZCgoY2hhcikocm5kLk5leHQoMjYpICsgNjMpKTsKCQkJdGV4dCA9IHNiLlRvU3RyaW5nKCk7CgoJCQlkb3VibGUgc3RhcnQsIGxpbnF0aW1lLCBkaWN0aW9uYXJ5dGltZTsKCgkJCXN0YXJ0ID0gU3lzdGVtLkRhdGVUaW1lLk5vdy5UaWNrczsKCQkJdmFyIGxpbnEgPSB0ZXh0Lkdyb3VwQnkoYyA9PiBjKTsKCgkJCWZvcmVhY2ggKHZhciBhIGluIGxpbnEpCgkJCXsKCQkJCUNvbnNvbGUuV3JpdGVMaW5lKCJ7MH0gPSB7MX0iLCBhLktleSwgYS5Db3VudCgpKTsJCQkKCQkJfQoJCQlsaW5xdGltZSA9IFN5c3RlbS5EYXRlVGltZS5Ob3cuVGlja3MgLSBzdGFydDsKCgoJCQlzdGFydCA9IFN5c3RlbS5EYXRlVGltZS5Ob3cuVGlja3M7CgkJCURpY3Rpb25hcnk8Y2hhciwgaW50PiBjb3VudHMgPSBuZXcgRGljdGlvbmFyeTxjaGFyLCBpbnQ+KCk7CgkJCWZvciAoaW50IGkgPSAwOyBpIDwgdGV4dC5MZW5ndGg7IGkrKykKCQkJCWlmIChjb3VudHMuQ29udGFpbnNLZXkodGV4dFtpXSkpCgkJCQkJY291bnRzW3RleHRbaV1dKys7CgkJCQllbHNlCgkJCQkJY291bnRzLkFkZCh0ZXh0W2ldLCAxKTsKCgkJCWZvcmVhY2ggKHZhciBjb3VudCBpbiBjb3VudHMpCgkJCQlDb25zb2xlLldyaXRlTGluZSgiezB9ID0gezF9IiwgY291bnQuS2V5LCBjb3VudC5WYWx1ZSk7CgoJCQlkaWN0aW9uYXJ5dGltZSA9IFN5c3RlbS5EYXRlVGltZS5Ob3cuVGlja3MgLSBzdGFydDsKCQkJCgkJCUNvbnNvbGUuV3JpdGVMaW5lKCJMSU5RIHRpbWUgOiB7MX1cbkRpY3Rpb25hcnkgdGltZSA6IHsyfVxuTElOUSBpcyB7MH0lIHF1aWNrZXIiICwgZGljdGlvbmFyeXRpbWUvbGlucXRpbWUgKiAxMDAgLSAxMDAsIGxpbnF0aW1lLCBkaWN0aW9uYXJ5dGltZSk7Cgl9Cn0=
-
upload with new input
-
result: Success time: 1.02s memory: 45088 kB returned value: 0
1 2 10 42 11
T = 38123 E = 38526 H = 38340 N = 38627 R = 38838 V = 38436 B = 38460 U = 38272 P = 38256 @ = 38554 I = 38529 K = 38214 C = 38677 L = 38391 O = 38845 S = 38477 Q = 38153 A = 38628 M = 38440 ? = 38081 W = 38213 D = 38610 X = 38009 J = 38741 F = 38832 G = 38728 T = 38123 E = 38526 H = 38340 N = 38627 R = 38838 V = 38436 B = 38460 U = 38272 P = 38256 @ = 38554 I = 38529 K = 38214 C = 38677 L = 38391 O = 38845 S = 38477 Q = 38153 A = 38628 M = 38440 ? = 38081 W = 38213 D = 38610 X = 38009 J = 38741 F = 38832 G = 38728 LINQ time : 7551360 Dictionary time : 1823232 LINQ is -75.8555809814391% quicker


