Пример #1
0
        private static long TreeGet <T>(Playground.HashTree <Type, T> tree, Type key, int times)
        {
            T ignored = default(T);

            var treeWatch = Stopwatch.StartNew();

            for (int i = 0; i < times; i++)
            {
                ignored = tree.GetValueOrDefault(key);
            }

            treeWatch.Stop();
            GC.KeepAlive(ignored);
            GC.Collect();
            return(treeWatch.ElapsedMilliseconds);
        }
Пример #2
0
        private static long TreeAdd <V>(ref Playground.HashTree <Type, V> tree, Type[] keys, Type key, V value)
        {
            var ignored  = default(V);
            var treeTime = Stopwatch.StartNew();

            for (var i = 0; i < keys.Length; i++)
            {
                var k = keys[i];
                Interlocked.Exchange(ref tree, tree.AddOrUpdate(k, ignored));
            }

            Interlocked.Exchange(ref tree, tree.AddOrUpdate(key, value));

            treeTime.Stop();
            GC.KeepAlive(ignored);
            GC.Collect();
            return(treeTime.ElapsedMilliseconds);
        }