public static void Test() { int N = 1000000; int variation = 10000000; long listStart = -1; var timer = Stopwatch.StartNew(); var ar = new ulong[N]; using (var mem = new MemoryStorage()) { using (var writer = new DeltaVarIntListWriter(mem.GetReference())) { var s1 = writer.StartList(); var prev = 0UL; var r = new Random(2019); for (int i = 0; i < N; ++i) { prev += 1 + (ulong)r.Next(variation); ar[i] = prev; writer.AddValue(prev); } var e1 = writer.EndList(); Console.WriteLine($"Count : {N}"); Console.WriteLine($"Length : {e1 - s1}"); listStart = s1; } Console.WriteLine($"Write : {timer.Elapsed}"); timer = Stopwatch.StartNew(); using (var reader = new DeltaVarIntListReader(mem.GetReference())) { int i = 0; foreach (var v in reader.Get(listStart)) { if (ar[i] != v) { throw new Exception($"{ar[i]} != {v} at {i}"); } ++i; } } Console.WriteLine($"Read : {timer.Elapsed}"); timer = Stopwatch.StartNew(); using (var reader = new DeltaVarIntListReader(mem.GetReference())) { for (int i = 0; i < N; ++i) { var v = reader.GetLowerBound(listStart, ar[i]).First(); if (ar[i] != v) { throw new Exception($"{ar[i]} != {v} at {i}"); } } } Console.WriteLine($"Seek : {timer.Elapsed}"); } }
protected override void DoStart() { base.DoStart(); indexInfo = new PersistentIndexInfo(Folder, PersistentIndex.FileNameInfo); fields = PersistentMetadataFactory.CreateStorage(name.FieldsType, Folder, PersistentIndex.FileNameFields); occurrenceWriter = PostingListIOFactory.CreateWriter(name.PostingType, Folder, PersistentIndex.FileNamePostingLists); dictionaryWriter = PersistentDictionaryFactory.CreateWriter(name.DictionaryType, Folder, PersistentIndex.FileNameDictionary, MaxTokenSize, name.TextEncoding); dictionaryUpdate = dictionaryWriter.BeginUpdate(); posIndexWriter = PersistentDictionaryFactory.CreateWriter(name.DictionaryType, Folder, PersistentIndex.FileNamePosIndex, PersistentIndex.PosIndexKeySize, name.TextEncoding); posIndexUpdate = posIndexWriter.BeginUpdate(); positionsWriter = new DeltaVarIntListWriter(Folder, PersistentIndex.FileNamePositions); dictUpdates = 0; posUpdates = 0; }