Ejemplo n.º 1
0
        public void SkipListPutWorking64()
        {
            using var simpleAllocator = new ArrayBasedAllocator64(4096 * 10_000, 25);
            var skipList = new SkipList64(simpleAllocator);

            SkipListPutWorking(skipList);
        }
Ejemplo n.º 2
0
        public Task CanPutInOrder64()
        {
            using var simpleAllocator = new ArrayBasedAllocator64(4096 * 50_000, 25);
            var skipList = new SkipList64(simpleAllocator);

            return(CanPutInOrder(skipList));
        }
Ejemplo n.º 3
0
        public async Task ArrayAllocator()
        {
            using var simpleAllocator = new ArrayBasedAllocator64(4096 * 1024 * 10, TableHeight);
            var skipList = new SkipList64(simpleAllocator);
            var tasks    = new Task[Environment.ProcessorCount];

            for (var i = 0; i < tasks.Length; i++)
            {
                tasks[i] = Task.Run(() => ThreadedPut(skipList));
            }
            await Task.WhenAll(tasks);
        }
Ejemplo n.º 4
0
        public async Task WriteAndReadFile()
        {
            using var allocator = new NativeAllocator64(4096 * 10_000, 25);
            var memoryTable = new SkipList64(allocator);

            var loadedWords = CommonData.Words;

            foreach (var word in loadedWords)
            {
                if (string.IsNullOrEmpty(word))
                {
                    continue;
                }
                var utf8  = Encoding.UTF8.GetBytes(word);
                var value = Encoding.UTF8.GetBytes($"VALUE={word}");
                memoryTable.Put(utf8, value);
            }

            var tempPath = System.IO.Path.GetTempPath();
            var fileName = System.IO.Path.Combine(tempPath, "Level1_1.trim");

            System.IO.File.Delete(fileName);

            var fw = new TableFileWriter(fileName);
            await fw.SaveMemoryTable(memoryTable);

            using (var blockCache = new MMapBlockCache())
            {
                var loadedTable = new TableFile(fileName, blockCache);
                await loadedTable.LoadAsync();

                // Check we can get the values back out

                var hash = new MurmurHash3();
                foreach (var word in loadedWords)
                {
                    var utf8  = Encoding.UTF8.GetBytes(word);
                    var value = Encoding.UTF8.GetBytes($"VALUE={word}");
                    var h     = hash.ComputeHash64(utf8);

                    var result = await loadedTable.GetAsync(utf8, h);

                    Assert.Equal(SearchResult.Found, result.Result);
                    Assert.Equal(value, result.Value.ToArray());
                }
            }
            System.IO.File.Delete(fileName);
        }