示例#1
0
        public void FitPreallocate()
        {
            using (var pile = new DefaultPile())
            {
                pile.Start();

                var obj1 = new Payload {
                    ID = 1, Name = "1", Data = null
                };

                var p1 = pile.Put(obj1, preallocateBlockSize: 4000);

                Aver.AreEqual(4000, pile.SizeOf(p1));

                var obj2 = new Payload {
                    ID = 2, Name = "2", Data = new byte [] { 1, 2, 3, 4, 5, 6, 7, 8 }
                };
                Aver.IsTrue(pile.Put(p1, obj2));

                Aver.AreEqual(1, pile.ObjectCount);
                var got = pile.Get(p1) as Payload;

                Aver.AreEqual(2, got.ID);
                Aver.AreEqual("2", got.Name);
                Aver.IsNotNull(got.Data);
                Aver.AreEqual(8, got.Data.Length);

                Aver.IsTrue(pile.AllocatedMemoryBytes > 0);
                Aver.IsTrue(pile.Delete(p1));
                Aver.IsTrue(pile.AllocatedMemoryBytes == 0);
                Aver.IsTrue(pile.ObjectCount == 0);
            }
        }
示例#2
0
        public void FitPreallocateString()
        {
            using (var pile = new DefaultPile())
            {
                pile.Start();

                var obj1 = "abcdefgh";

                var p1  = pile.Put(obj1, preallocateBlockSize: 4000);
                var got = pile.Get(p1) as string;
                Aver.AreEqual("abcdefgh", got);

                Aver.AreEqual(4000, pile.SizeOf(p1));

                var obj2 = "abcdefghijklmnopqrst0912345";
                Aver.IsTrue(pile.Put(p1, obj2));

                Aver.AreEqual(1, pile.ObjectCount);
                got = pile.Get(p1) as string;

                Aver.AreEqual("abcdefghijklmnopqrst0912345", got);

                Aver.IsTrue(pile.AllocatedMemoryBytes > 0);
                Aver.IsTrue(pile.Delete(p1));
                Aver.IsTrue(pile.AllocatedMemoryBytes == 0);
                Aver.IsTrue(pile.ObjectCount == 0);
            }
        }
示例#3
0
        public void LinkNoPreallocate()
        {
            using (var pile = new DefaultPile())
            {
                pile.Start();

                var obj1 = new Payload {
                    ID = 1, Name = "1", Data = null
                };

                var p1 = pile.Put(obj1);

                Aver.IsTrue(pile.SizeOf(p1) < 128);

                var obj2 = new Payload {
                    ID = 2, Name = "2", Data = new byte [128]
                };
                Aver.IsTrue(pile.Put(p1, obj2));

                Aver.AreEqual(1, pile.ObjectCount);
                var got = pile.Get(p1) as Payload;

                Aver.AreEqual(2, got.ID);
                Aver.AreEqual("2", got.Name);
                Aver.IsNotNull(got.Data);
                Aver.AreEqual(128, got.Data.Length);

                Aver.IsTrue(pile.AllocatedMemoryBytes > 0);
                Aver.IsTrue(pile.Delete(p1));
                Aver.IsTrue(pile.AllocatedMemoryBytes == 0);
                Aver.IsTrue(pile.ObjectCount == 0);
            }
        }
示例#4
0
        public void FitPreallocateByteArray()
        {
            using (var pile = new DefaultPile())
            {
                pile.Start();

                var obj1 = new byte[3];

                var p1  = pile.Put(obj1, preallocateBlockSize: 4000);
                var got = pile.Get(p1) as byte[];
                Aver.AreEqual(3, got.Length);

                Aver.AreEqual(4000, pile.SizeOf(p1));

                var obj2 = new byte[571];
                Aver.IsTrue(pile.Put(p1, obj2));

                Aver.AreEqual(1, pile.ObjectCount);
                got = pile.Get(p1) as byte[];

                Aver.AreEqual(571, got.Length);

                Aver.IsTrue(pile.AllocatedMemoryBytes > 0);
                Aver.IsTrue(pile.Delete(p1));
                Aver.IsTrue(pile.AllocatedMemoryBytes == 0);
                Aver.IsTrue(pile.ObjectCount == 0);
            }
        }
示例#5
0
        public void LinkPreallocate()
        {
            using (var pile = new DefaultPile(NOPApplication.Instance))
            {
                pile.Start();

                var obj1 = new Payload {
                    ID = 1, Name = "1", Data = null
                };

                var p1 = pile.Put(obj1, preallocateBlockSize: 2000);

                Aver.AreEqual(2000, pile.SizeOf(p1));

                var obj2 = new Payload {
                    ID = 2, Name = "2", Data = new byte [3000]
                };
                Aver.IsTrue(pile.Put(p1, obj2));

                Aver.AreEqual(1, pile.ObjectCount);
                var got = pile.Get(p1) as Payload;

                Aver.AreEqual(2, got.ID);
                Aver.AreEqual("2", got.Name);
                Aver.IsNotNull(got.Data);
                Aver.AreEqual(3000, got.Data.Length);

                Aver.IsTrue(pile.AllocatedMemoryBytes > 0);
                Aver.IsTrue(pile.Delete(p1));
                Aver.IsTrue(pile.AllocatedMemoryBytes == 0);
                Aver.IsTrue(pile.ObjectCount == 0);
            }
        }
示例#6
0
文件: PileForm.cs 项目: rioka/nfx
        private void btnPersonSizeOf_Click(object sender, EventArgs e)
        {
            if (lbPerson.SelectedItem == null)
            {
                return;
            }
            var pp = (PilePointer)lbPerson.SelectedItem;

            Text = "Size of {0} is {1:n} bytes".Args(pp, m_Pile.SizeOf(pp));
        }
示例#7
0
        public void Reallocate_Delete()
        {
            using (var pile = new DefaultPile())
            {
                pile.Start();

                var obj1 = new Payload {
                    ID = 1, Name = "1", Data = null
                };

                var p1 = pile.Put(obj1, preallocateBlockSize: 2000);

                Aver.AreEqual(2000, pile.SizeOf(p1));
                var a = pile.AllocatedMemoryBytes;
                var u = pile.UtilizedBytes;
                var o = pile.OverheadBytes;
                Console.WriteLine("Allocated: {0:n0}  Utilized: {1:n0}  Overhead: {2:n0}", a, u, o);

                Aver.AreEqual(2000, u);

                Aver.IsTrue(pile.Put(p1, new Payload {
                    Data = new byte[8000]
                }));

                var a2 = pile.AllocatedMemoryBytes;
                var u2 = pile.UtilizedBytes;
                var o2 = pile.OverheadBytes;
                Console.WriteLine("Allocated: {0:n0}  Utilized: {1:n0}  Overhead: {2:n0}", a2, u2, o2);

                Aver.IsTrue(u2 > 10000);
                Aver.IsTrue(u2 > u);
                pile.Delete(p1);

                u2 = pile.UtilizedBytes;
                Console.WriteLine("Allocated: {0:n0}  Utilized: {1:n0}  Overhead: {2:n0}", a2, u2, o2);
                Aver.AreEqual(0, u2);
            }
        }