Example #1
0
        //private static long IntGet(ImTreeArray store, int key, int times)
        //{
        //    object ignored = "ignored";
        //    var treeWatch = Stopwatch.StartNew();

        //    for (int i = 0; i < times; i++)
        //        ignored = store.Get(key);

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

        private static long IntTreeV2Get <V>(HashTreeV2 <V> tree, int key, int times)
        {
            V   ignored   = default(V);
            var treeWatch = Stopwatch.StartNew();

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

            treeWatch.Stop();
            GC.KeepAlive(ignored);
            GC.Collect();
            return(treeWatch.ElapsedMilliseconds);
        }
Example #2
0
        //private static long IntAdd(ref ImTreeArray store, int[] keys, string value)
        //{
        //    const string ignored = "";
        //    var treeTime = Stopwatch.StartNew();

        //    for (var i = 0; i < keys.Length; i++)
        //        Interlocked.Exchange(ref store, store.Append(ignored + i));

        //    Interlocked.Exchange(ref store, store.Append(value));

        //    treeTime.Stop();
        //    GC.Collect();
        //    return treeTime.ElapsedMilliseconds;
        //}

        //private static long IntAdd(ref IntTree<string> tree, int[] keys, int key, string value)
        //{
        //    var ignored = "ignored";
        //    var treeTime = Stopwatch.StartNew();

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

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

        //    treeTime.Stop();
        //    GC.Collect();
        //    return treeTime.ElapsedMilliseconds;
        //}

        private static long IntTreeV2Add <V>(ref HashTreeV2 <V> tree, int[] keys, int key, V value)
        {
            var ignored  = default(V);
            var treeTime = Stopwatch.StartNew();

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

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

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