static void dictionary_rehash2_benchmark() { Console.Write("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n"); Console.Write(" dictionary_rehash2_benchmark()\n"); Console.Write("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n"); Console.Write("\n"); int kHeaderFieldSize = header_fields.Length; #if DEBUG int kRepeatTimes = 200; #else int kRepeatTimes = (kIterations / kHeaderFieldSize / 2); #endif string[] field_str = new string[kHeaderFieldSize]; string[] index_str = new string[kHeaderFieldSize]; for (int i = 0; i < kHeaderFieldSize; ++i) { field_str[i] = header_fields[i]; index_str[i] = string.Format("{0}", i); } { long checksum = 0; int buckets = 128; double totalTime = 0.0; Stopwatch sw = new Stopwatch(); sw.Restart(); for (int i = 0; i < kRepeatTimes; ++i) { DictionaryEx <string, string> dict = new DictionaryEx <string, string>(); for (int j = 0; j < kHeaderFieldSize; ++j) { if (!dict.ContainsKey(field_str[j])) { dict.Add(field_str[j], index_str[j]); } } checksum += dict.Count(); checksum += dict.BucketCount; buckets = 128; dict.Resize(buckets); checksum += dict.BucketCount; for (int j = 0; j < 7; ++j) { buckets *= 2; dict.Resize(buckets); checksum += dict.BucketCount; } } sw.Stop(); totalTime += sw.Elapsed.TotalMilliseconds; Console.Write("-------------------------------------------------------------------------\n"); Console.Write(" {0,-28} ", "DictionaryEx<string, string>"); Console.Write("sum = {0,-10:g} time: {1,8:f} ms\n", checksum, totalTime); Console.Write("-------------------------------------------------------------------------\n"); Console.Write("\n"); } }
static void hashtable_rehash2_benchmark_impl() { int kHeaderFieldSize = header_fields.Length; #if DEBUG int kRepeatTimes = 200; #else int kRepeatTimes = (kIterations / kHeaderFieldSize / 2); #endif String[] field_str = new String[kHeaderFieldSize]; String[] index_str = new String[kHeaderFieldSize]; for (int i = 0; i < kHeaderFieldSize; ++i) { #if NO_STRING_INTERNING field_str[i] = String.Format("{0}", header_fields[i].ToCharArray()); index_str[i] = String.Format("{0}", i); #else field_str[i] = String.Intern(header_fields[i]); index_str[i] = String.Intern(String.Format("{0}", i)); #endif } { long checksum = 0; int buckets = 128; double totalTime = 0.0; Stopwatch sw = new Stopwatch(); sw.Restart(); for (int i = 0; i < kRepeatTimes; ++i) { DictionaryEx <String, String> dict = new DictionaryEx <String, String>(); for (int j = 0; j < kHeaderFieldSize; ++j) { if (!dict.ContainsKey(field_str[j])) { dict.Add(field_str[j], index_str[j]); } } checksum += dict.Count(); checksum += dict.BucketCount; buckets = 128; dict.Resize(buckets); checksum += dict.BucketCount; for (int j = 0; j < 7; ++j) { buckets *= 2; dict.Resize(buckets); checksum += dict.BucketCount; } } sw.Stop(); totalTime += sw.Elapsed.TotalMilliseconds; //Console.Write("-------------------------------------------------------------------------\n"); Console.Write(" {0,-28} ", "DictionaryEx<String, String>"); Console.Write("sum = {0,-10:g} time: {1,8:f} ms\n", checksum, totalTime); //Console.Write("-------------------------------------------------------------------------\n"); Console.Write("\n"); } }