Beispiel #1
0
 public ThreadSafeDictionary()
 {
     dict = new FasterDictionary <TKey, TValue>();
 }
Beispiel #2
0
 public FasterDictionaryDebugProxy(FasterDictionary <TKey, TValue> dic)
 {
     this._dic = dic;
 }
Beispiel #3
0
 public ThreadSafeDictionary(int size)
 {
     dict = new FasterDictionary <TKey, TValue>((uint)size);
 }
Beispiel #4
0
        private static void Profiling()
        {
            int dictionarysize = 10000000;

            int[] numbers = new int[dictionarysize];
            var   r       = new Random();

            for (int i = 0; i < dictionarysize; i++)
            {
                numbers[i] = r.Next();
            }

            FasterDictionary <int, Test> fasterDictionary = new FasterDictionary <int, Test>();
            Dictionary <int, Test>       dictionary       = new Dictionary <int, Test>();

            System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();

            System.Console.WriteLine("insert");
            for (int i = 0; i < dictionarysize; i++)
            {
                dictionary[numbers[i]] = new Test(i);
            }
            watch.Reset();
            watch.Start();
            for (int i = 0; i < dictionarysize; i++)
            {
                dictionary[numbers[i]] = new Test(i);
            }
            watch.Stop();
            System.Console.WriteLine(watch.ElapsedMilliseconds);
            for (int i = 0; i < dictionarysize; i++)
            {
                fasterDictionary[numbers[i]] = new Test(i);
            }
            watch.Reset();
            watch.Start();
            for (int i = 0; i < dictionarysize; i++)
            {
                fasterDictionary[numbers[i]] = new Test(i);
            }
            watch.Stop();
            System.Console.WriteLine(watch.ElapsedMilliseconds);

/*
 *          fasterDictionary = new FasterDictionary<int, Test>();
 *          dictionary = new Dictionary<int, Test>();
 *          System.Console.WriteLine("add after new");
 *          watch.Reset();
 *          watch.Start();
 *          for (int i = 0; i < dictionarysize; i++) dictionary.Add(numbers[i], new Test(i));
 *          watch.Stop();
 *          System.Console.WriteLine(watch.ElapsedMilliseconds);
 *
 *          watch.Reset();
 *          watch.Start();
 *          for (int i = 0; i < dictionarysize; i++) fasterDictionary.Add(numbers[i], new Test(i));
 *          watch.Stop();
 *          System.Console.WriteLine(watch.ElapsedMilliseconds);
 */
            fasterDictionary = new FasterDictionary <int, Test>(dictionarysize);
            dictionary       = new Dictionary <int, Test>();
            System.Console.WriteLine("insert after new with presize");
            watch.Reset();
            watch.Start();
            for (int i = 0; i < dictionarysize; i++)
            {
                dictionary[numbers[i]] = new Test(i);
            }
            watch.Stop();
            System.Console.WriteLine(watch.ElapsedMilliseconds);

            watch.Reset();
            watch.Start();
            for (int i = 0; i < dictionarysize; i++)
            {
                fasterDictionary[numbers[i]] = new Test(i);
            }
            watch.Stop();
            System.Console.WriteLine(watch.ElapsedMilliseconds);

            dictionary.Clear();
            fasterDictionary.Clear();
            System.Console.WriteLine("insert after clear");
            watch.Reset();
            watch.Start();
            for (int i = 0; i < dictionarysize; i++)
            {
                dictionary[numbers[i]] = new Test(i);
            }
            watch.Stop();
            System.Console.WriteLine(watch.ElapsedMilliseconds);

            watch.Reset();
            watch.Start();
            for (int i = 0; i < dictionarysize; i++)
            {
                fasterDictionary[numbers[i]] = new Test(i);
            }
            watch.Stop();
            System.Console.WriteLine(watch.ElapsedMilliseconds);

            System.Console.WriteLine("read");

            watch.Reset();
            watch.Start();
            for (int i = 0; i < dictionarysize; i++)
            {
                Test JapaneseCalendar;
                JapaneseCalendar = dictionary[numbers[i]];
            }

            watch.Stop();

            System.Console.WriteLine(watch.ElapsedMilliseconds);

            watch.Reset();
            watch.Start();
            for (int i = 0; i < dictionarysize; i++)
            {
                Test JapaneseCalendar;
                JapaneseCalendar = fasterDictionary[numbers[i]];
            }

            watch.Stop();

            System.Console.WriteLine(watch.ElapsedMilliseconds);

            System.Console.WriteLine("iterate values");

            watch.Reset();
            watch.Start();
            for (int i = 0; i < 1; i++)
            {
                Test JapaneseCalendar;
                foreach (var VARIABLE in dictionary.Values)
                {
                    JapaneseCalendar = VARIABLE;
                }
            }

            watch.Stop();

            System.Console.WriteLine(watch.ElapsedMilliseconds);

            watch.Reset();
            watch.Start();
            for (int i = 0; i < 1; i++)
            {
                Test JapaneseCalendar;
                int  count;
                var  buffer = fasterDictionary.GetValuesArray(out count);
                for (int j = 0; j < count; j++)
                {
                    JapaneseCalendar = buffer[j];
                }
            }

            watch.Stop();

            System.Console.WriteLine(watch.ElapsedMilliseconds);

            System.Console.WriteLine("remove");
            watch.Reset();
            watch.Start();
            for (int i = 0; i < dictionarysize; i++)
            {
                dictionary.Remove(numbers[i]);
            }

            watch.Stop();

            System.Console.WriteLine(watch.ElapsedMilliseconds);

            watch.Reset();
            watch.Start();
            for (int i = 0; i < dictionarysize; i++)
            {
                fasterDictionary.Remove(numbers[i]);
            }

            watch.Stop();

            System.Console.WriteLine(watch.ElapsedMilliseconds);
        }