public static void Test(string filename) { //try { using (var memoryManager = new UInt64LinksMemoryManager(filename, 512 * 1024 * 1024)) using (var links = new UInt64Links(memoryManager)) { var syncLinks = new SynchronizedLinks<ulong>(links); //links.EnterTransaction(); var link = memoryManager.AllocateLink(); memoryManager.FreeLink(link); Console.ReadKey(); var temp1 = syncLinks.Create(); var temp2 = syncLinks.Create(); var temp3 = syncLinks.CreateAndUpdate(temp1, temp2); var temp4 = syncLinks.CreateAndUpdate(temp1, temp3); var temp5 = syncLinks.CreateAndUpdate(temp4, temp2); //links.Delete(links.GetSource(temp2), links.GetTarget(temp2)); //links.Each(0, temp2, x => links.PrintLink(x)); syncLinks.Each(syncLinks.Constants.Any, syncLinks.Constants.Any, x => { memoryManager.PrintLink(x); return true; }); //links.ExportSourcesTree(filename + ".gexf"); Console.WriteLine("---"); Console.WriteLine(syncLinks.Count()); var sequences = new Sequences(syncLinks); //var seq = sequences.Create(temp1, temp5, temp2, temp1, temp2); //, temp5); var sequence = sequences.Create(temp1, temp5, temp2, temp1, temp2, temp3, temp2, temp4, temp1, temp5); //, temp5); //links.Each(0, 0, (x, isAPoint) => { links.PrintLink(x); return true; }); //sequences.Each((x, isAPoint) => { links.PrintLink(x); return true; }, temp1, temp5, temp2, temp1, temp2, temp3, temp2, temp4, temp1, temp5); var sequencesCount = 0; sequences.Each(x => { sequencesCount++; return true; }, temp1, temp5, temp2, temp1, temp2, temp3, temp2, temp4, temp1, temp5); sequences.Compact(temp1, temp5, temp2, temp1, temp2, temp3, temp2, temp4, temp1, temp5); Console.WriteLine(sequencesCount); Console.WriteLine(syncLinks.Count()); sequences.Create(temp1, temp1, temp1, temp1, temp1, temp1, temp1, temp1, temp1, temp1, temp1, temp1, temp1); Console.WriteLine(syncLinks.Count()); Console.ReadKey(); //var ps = (from Pair score in links // where score.Target == temp2 // select score).ToArray(); //var ls = (from Link score in links // where score.Target == temp2 // select score).ToArray(); //links.Execute(db => from User user in links // select user); //var firstLink = links.First(); //links.Delete(ref firstLink); Console.WriteLine("---"); syncLinks.Each(syncLinks.Constants.Any, syncLinks.Constants.Any, x => { memoryManager.PrintLink(x); return true; }); Console.WriteLine("---"); //links.ExitTransaction(); //links.EnterTransaction(); //links.ExitTransaction(); } ; } //catch (Exception ex) { // ex.WriteToConsole(); } Console.ReadKey(); }
public void AllVariantsSearchTest() { string tempFilename = Path.GetTempFileName(); const long sequenceLength = 8; const ulong itself = Links.Itself; using (var links = new Links(tempFilename, LinksSizeStep)) { var sequence = new ulong[sequenceLength]; for (int i = 0; i < sequenceLength; i++) sequence[i] = links.Create(itself, itself); var sequences = new Sequences(links); var createResults = sequences.CreateAllVariants2(sequence).Distinct().ToArray(); var sw0 = Stopwatch.StartNew(); var searchResults0 = sequences.GetAllMatchingSequences0(sequence); sw0.Stop(); var sw1 = Stopwatch.StartNew(); var searchResults1 = sequences.GetAllMatchingSequences1(sequence); sw1.Stop(); var sw2 = Stopwatch.StartNew(); var searchResults2 = sequences.Each(sequence); sw2.Stop(); var intersection0 = createResults.Intersect(searchResults0).ToList(); Assert.IsTrue(intersection0.Count == searchResults0.Count); Assert.IsTrue(intersection0.Count == createResults.Length); var intersection1 = createResults.Intersect(searchResults1).ToList(); Assert.IsTrue(intersection1.Count == searchResults1.Count); Assert.IsTrue(intersection1.Count == createResults.Length); var intersection2 = createResults.Intersect(searchResults2).ToList(); Assert.IsTrue(intersection2.Count == searchResults2.Count); Assert.IsTrue(intersection2.Count == createResults.Length); //Assert.IsTrue(sw1.Elapsed < sw2.Elapsed); for (int i = 0; i < sequenceLength; i++) links.Delete(sequence[i]); } File.Delete(tempFilename); }