public GrowableArrayBackedNodeContainer(int?size = null, bool useArrayPool = false)
        {
            if (size.HasValue == false)
            {
                size = 100000;
            }
            _size = size.Value;


            var initialData = new ArrayBackedNodesContainer <T>(_size, useArrayPool);

            _data.Add(initialData);
        }
Exemplo n.º 2
0
        public void UsingIntKeysOnArrayBackedTrie()
        {
            object f1()
            {
                var container = new ArrayBackedNodesContainer <int>(TotalKeys * 32);
                var trie      = new PlugableBinaryTrie <int>(container);

                for (int i = TotalKeys; i >= 0; i--)
                {
                    trie.Add(i, i);
                }

                Assert.Equal(TotalKeys + 1, trie.Count);

                var lastKey = -1;
                var allOk   = true;

                foreach (var kvp in trie.GetEntrySet(reuseKeysList: true))
                {
                    var key   = kvp.Item1[0];
                    var value = kvp.Item2;
                    allOk = allOk && key == value;
                    allOk = allOk && key >= lastKey;
                    Assert.True(allOk);
                    lastKey = key;
                }

                Assert.True(allOk);

                return(trie);
            }

            var oldCount = TotalKeys;

            TotalKeys = 100000;
            var disposable = f1() as IDisposable;

            disposable.Dispose();
            TotalKeys = oldCount;

            var execution = H.Run(f1);

            this.output.WriteLine(execution.ToString());
        }
Exemplo n.º 3
0
        public void UsingArrayBackedTrie()
        {
            object f1()
            {
                var container = new ArrayBackedNodesContainer <int>(TotalKeys * 32);
                var trie      = new PlugableBinaryTrie <int>(container);

                for (int i = TotalKeys; i >= 0; i--)
                {
                    trie.Add(i, i);
                }

                var allOk = true;

                for (int i = TotalKeys; i >= 0; i--)
                {
                    var value = trie.GetValue(i, -1);
                    allOk = allOk && value == i;
                }

                Assert.True(allOk);

                return(trie);
            }

            var oldCount = TotalKeys;

            TotalKeys = 100000;
            var disp = f1() as IDisposable;

            disp.Dispose();
            TotalKeys = oldCount;

            var execution = H.Run(f1);

            this.output.WriteLine(execution.ToString());
        }