Ejemplo n.º 1
0
        public void CreateTreeAndOverWriteSomeAndReadAgain()
        {
            var node = new BPTreeNode <int, TestObject>(15);

            for (int i = 0; i < 50; i++)
            {
                node = node.Insert(i, new TestObject()
                {
                    Num = i.ToString()
                });
            }
            var result = node.Query(6);

            node = node.Insert(6, new TestObject()
            {
                Num = 6.ToString() + "a"
            });
            for (int i = 0; i < 10; i++)
            {
                node = node.Insert(i, new TestObject()
                {
                    Num = i.ToString() + "b"
                });
            }
            for (int i = 0; i < 50; i++)
            {
                var retrieved = node.Query(i);
            }
        }
Ejemplo n.º 2
0
        public BranchingFactorGroupResult TestUnSequential(int branchFactor, int numInsertions)
        {
            var       result = new BranchingFactorGroupResult();
            Stopwatch timer  = new Stopwatch();

            timer.Start();
            var node = new BPTreeNode <int, int>();

            node.BranchingFactor = branchFactor;

            for (int i = 1; i < numInsertions + 1; i++)
            {
                timer.Stop();
                var num = GetRandomNumber(result.UsedNumbers);
                timer.Start();
                node = node.Insert(num, num);
            }

            timer.Stop();
            result.TestResult = timer.ElapsedTicks;
            //result.NodeResult = node;

            for (int i = 0; i < 5; i++)
            {
                var randomIndex  = GetRandomNumber(0, result.UsedNumbers.Keys.Count - 1, new Dictionary <int, int>());
                var randomNumber = result.UsedNumbers.Keys.ElementAt((int)randomIndex);
                timer.Restart();
                var queryResult = node.Query(randomNumber);
                timer.Stop();
                result.ReadResults.Add(timer.ElapsedTicks);
            }
            return(result);
        }
Ejemplo n.º 3
0
        public BranchingFactorGroupResult TestSequential(int branchFactor, int numInsertions)
        {
            var       result = new BranchingFactorGroupResult();
            Stopwatch timer  = new Stopwatch();

            timer.Start();
            var node = new BPTreeNode <int, int>();

            node.BranchingFactor = branchFactor;

            for (int i = 1; i < numInsertions + 1; i++)
            {
                node = node.Insert(i, i);
            }

            timer.Stop();
            result.TestResult = timer.ElapsedTicks;
            //result.NodeResult = node;

            for (int i = 0; i < 5; i++)
            {
                var randomNumber = GetRandomNumber(1, numInsertions, new Dictionary <int, int>());
                timer.Restart();
                var queryResult = node.Query(randomNumber);
                timer.Stop();
                result.ReadResults.Add(timer.ElapsedTicks);
            }
            return(result);
        }
Ejemplo n.º 4
0
 private bool TestNode(BPTreeNode <int, int> node, long key, long data)
 {
     if (node == null)
     {
         return(false);
     }
     return(node.Data.Any(n => n.Key == key && n.Value == data));
 }
Ejemplo n.º 5
0
        public void CreateSingleNode()
        {
            var node = new BPTreeNode <int, int>(10);

            node = node.Insert(1, 123);

            Assert.IsTrue(TestNode(node, 1, 123));
        }
Ejemplo n.º 6
0
        public void CreateNodeAndInsertSequentially()
        {
            var node = new BPTreeNode <int, int>(10);

            // insert arbitrary calc based on i to spice things up and know that it isn't just returning the key
            Func <int, int> calcData = num => ((int)(((num + 3) * 5) / 4));

            for (int i = 0; i < 1000; i++)
            {
                node = node.Insert(i, calcData(i));
                for (int j = 0; j <= i; j++)
                {
                    var retrieved = node.Query(j);
                    Assert.AreEqual(retrieved, calcData(j));
                }
            }
        }
Ejemplo n.º 7
0
        public void IndexSequentialTest()
        {
            BPTreeNode <int, int> node = new BPTreeNode <int, int>(10);

            for (int i = 1; i <= 1000000; i++)
            {
                node = node.Insert(i, i);
            }

            if (File.Exists(@"C:\temp\node.xml"))
            {
                File.Delete(@"C:\temp\node.xml");
            }

            using (FileStream stream = File.Create(@"C:\temp\node.xml"))
            {
                XmlSerializer ser = new XmlSerializer(typeof(BPTreeNode <int, int>));
                ser.Serialize(stream, node);
            }
        }
Ejemplo n.º 8
0
        public BTreeViewModel()
        {
            BPTreeNode <int, int> node = new BPTreeNode <int, int>(20);

            TreeNode = node;
            Stopwatch stop = new Stopwatch();

            stop.Start();

            for (int i = 1; i <= 999; i++)
            {
                //var num = i;

                //stop.Stop();
                var num = GenerateRandomNumber();
                //stop.Start();

                node = node.Insert(num, num);
            }
            //stop.Stop();

            TreeNode = node;

            InsertCommand = new DelegateCommand(o => !string.IsNullOrEmpty(TextValue), o =>
            {
                int val = 0;
                if (int.TryParse(TextValue, out val))
                {
                    TreeNode = TreeNode.Insert(val, val);
                    PropertyChanged(this, new PropertyChangedEventArgs("Root"));
                    _history.Add(val);
                }
                else
                {
                    var elems = TextValue.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (var e in elems)
                    {
                        int v = 0;
                        if (int.TryParse(e, out v))
                        {
                            TreeNode = TreeNode.Insert(v, v);
                            PropertyChanged(this, new PropertyChangedEventArgs("Root"));
                            _history.Add(v);
                        }
                    }
                }
                TextValue = null;
                PropertyChanged(this, new PropertyChangedEventArgs("TextValue"));
                PropertyChanged(this, new PropertyChangedEventArgs("History"));
                PropertyChanged(this, new PropertyChangedEventArgs("HistoryString"));
            });
            ResetCommand = new DelegateCommand(o => true, o =>
            {
                TreeNode = new BPTreeNode <int, int>(100);
                PropertyChanged(this, new PropertyChangedEventArgs("Root"));
                _history = new List <int>();
                PropertyChanged(this, new PropertyChangedEventArgs("History"));
            });
            SaveCommand = new DelegateCommand(o => true, o =>
            {
                SaveFileDialog dialog = new SaveFileDialog();
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    using (var stream = File.Create(dialog.FileName))
                    {
                        XmlSerializer ser = new XmlSerializer(typeof(BPTreeNode <int, int>));
                        ser.Serialize(stream, TreeNode);
                    }
                }
            });
            //TextValue = "50,100,20,150,40,10,30,18,2,19,15";
        }