Exemple #1
0
        public void LevelMergeReadTest2()
        {
            string path = Path.GetFullPath("TestData\\LevelMergeReadTest2");

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            int num_tables_to_merge = 4;
            int items_per_table     = 2500;
            int totalData           = 0;

            for (int i = 0; i < num_tables_to_merge; i++)
            {
                var mt = new MemTable();
                for (int j = 0; j < items_per_table; j++)
                {
                    var randKey = Key.Random(40);
                    var randVal = Value.Random(512);
                    mt.Add(randKey, randVal);
                }
                mt.WriteToSortedBlockTable("TestData\\LevelMergeReadTest2", 0, i);
                totalData += mt.Size;
            }

            var cache = new RazorCache();
            int ct    = 0;
            Key key   = new Key(new ByteArray(new byte[] { 0 }));
            var timer = new Stopwatch();

            timer.Start();
            foreach (var pair in SortedBlockTable.EnumerateMergedTablesPreCached(cache, "TestData\\LevelMergeReadTest2",
                                                                                 new List <PageRef> {
                new PageRef {
                    Level = 0, Version = 0
                },
                new PageRef {
                    Level = 0, Version = 1
                },
                new PageRef {
                    Level = 0, Version = 2
                },
                new PageRef {
                    Level = 0, Version = 3
                }
            }, ExceptionHandling.ThrowAll, null))
            {
                Assert.True(key.CompareTo(pair.Key) < 0);
                key = pair.Key;
                ct++;
            }
            timer.Stop();

            Console.WriteLine("Scanned through a multilevel merge at a throughput of {0} MB/s", (double)totalData / timer.Elapsed.TotalSeconds / (1024.0 * 1024.0));
        }