コード例 #1
0
        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");
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: shines77/hashmap-benchmark
        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");
            }
        }