/// <summary> /// запускает Build и замеряет время. /// </summary> /// <param name="graph"> тестируемый граф должен реализовать интерфейс <seealso cref="RDFCommon.IGraph<string,string,ObjectVariants>"/></param> /// <param name="turtleFileName"> путь к внешнему файлу ttl</param> public static void TestReadTtl(this IGraph <Triple <string, string, ObjectVariants> > graph, string turtleFileName) { Performance.ComputeTime(() => graph.Build( ReadTripleStringsFromTurtle.LoadGraph(turtleFileName)), "build " + turtleFileName + " ", true); }
/// <summary> /// запускает Build и замеряет время. /// </summary> /// <param name="graph"> тестируемый граф должен реализовать интерфейс <see cref="RDFCommon.IGraph<string,string,ObjectVariants>"/></param> /// <param name="millions">в данных пока предполагаются варианты: 1, 10, 100, 1000</param> public static void TestReadTtl(this IGraph <Triple <string, string, ObjectVariants> > graph, int millions) { Performance.ComputeTime(() => graph.Build( ReadTripleStringsFromTurtle.LoadGraph( Config.Source_data_folder_path + millions + ".ttl")), "build " + millions + ".ttl ", true); }
private static void MainPersons(string[] args) { TestingPhotoPersons.Npersons = 40 * 1000; string path = "../../../Databases/int based/" + TestingPhotoPersons.Npersons / 1000 + "/"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } StoreCascadingInt store = new StoreCascadingInt(path); using (StreamWriter perfomance = new StreamWriter("../../Perfomance.txt")) perfomance.WriteLine(TestingPhotoPersons.Npersons); if (true) { Performance.ComputeTime(() => Reload(store), "load " + TestingPhotoPersons.Npersons + " ", true); } TestingPhotoPersons.Run((q) => { var sparqlQuery = SparqlQueryParser.Parse(store, q).Run(); if (sparqlQuery.ResultType == ResultType.Ask) { var b = sparqlQuery.AnyResult; } else { sparqlQuery.Results.Count(); } }); }
/// <summary> /// запускает Build и замеряет время. /// использует <see cref="TripleGeneratorBufferedParallel"/> /// /// </summary> /// <param name="graph"> тестируемый граф должен реализовать интерфейс <see cref="RDFCommon.IGraph<string,string,ObjectVariants>"/></param> /// <param name="millions">в данных пока предполагаются варианты: 1, 10, 100, 1000</param> public static void TestReadTtl_Cocor(this IGraph <Triple <string, string, ObjectVariants> > graph, int millions) { Performance.ComputeTime(() => { var generator = new TripleGeneratorBufferedParallel(Config.Source_data_folder_path + millions + ".ttl", "g"); graph.Build(generator); }, "build " + millions + ".ttl ", true); }
private static void RunAllBerlinByOne() { var Store = new StoreCascadingInt("../../../Databases/int based/"); Performance.ComputeTime(() => Store.ReloadFrom(Config.Source_data_folder_path + "1M.ttl"), "load 1млн ", true); // return; // Store.ActivateCache(); Store.Start(); //for (int i = 0; i < 12; i++) //{ // SparqlTesting.OneBerlinParametrized(Store, i + 1, 100); //} }
/// <summary> /// Замеряет время: /// 1) поток всех триплетов ограничен 100 триплетами; /// 2) заменяет субъекты объектами, если они uri и проводит поиск; /// 3) поиск только по предикаьам взятым из первых 100 триплетов; /// </summary> /// <typeparam name="Ts"></typeparam> /// <typeparam name="Tp"></typeparam> /// <typeparam name="To"></typeparam> /// <param name="graph"></param> public static void TestSearch(this IGraph <Triple <string, string, ObjectVariants> > graph) { var all = graph.Search(); Triple <string, string, ObjectVariants>[] ts100 = null; Performance.ComputeTime(() => { ts100 = all.Take(100).ToArray(); }, "get first's 100 triples ", true); Performance.ComputeTime(() => { foreach (var t in ts100) { if (t.Object.Variant == ObjectVariantEnum.Iri) { graph.Search(((OV_iri)t.Object).UriString).ToArray(); } } }, "search by object as subject from first's 100 triples ", true); Performance.ComputeTime(() => { foreach (var t in ts100) { graph.Search(predicate: t.Predicate).ToArray(); } }, "search by predicate from first's 100 triples ", true); Performance.ComputeTime(() => { foreach (var t in ts100) { var triples = graph.Search(t.Subject, t.Predicate, t.Object).ToArray(); if (!triples.All( tt => tt.Subject == t.Subject && tt.Predicate == t.Predicate && tt.Object == t.Object)) { throw new Exception(); } } }, "search by subject predicate and object from first's 100 triples, compare correctness ", true); }
public static void Run(Action <string> runQueryReturnCount) { //Console.WriteLine(runQueryReturnCount(QGetPerson3123Info())); Performance.ComputeTime(() => { for (int i = 0; i < 1000; i++) { runQueryReturnCount(QGetPersonInfo()); } }, "1000 sPO ok. duration=", true); Performance.ComputeTime(() => { for (int i = 0; i < 1000; i++) { runQueryReturnCount(QGetPersonName()); } }, string.Format("1000 spO ok. duration="), true); Performance.ComputeTime(() => { for (int i = 0; i < 1000; i++) { runQueryReturnCount(QContainsPersonType()); //if (!exists) throw new Exception("438723"); } }, "1000 spo ok duration=", true); Performance.ComputeTime(() => { for (int i = 0; i < 1000; i++) { runQueryReturnCount(QGetPersonPhotoNames()); } }, string.Format("1000 portraits ok. duration="), true); }
/// <summary> /// запускает Build и замеряет время. /// </summary> /// <param name="graph"> тестируемый граф должен реализовать интерфейс <seealso cref="RDFCommon.IGraph<string,string,ObjectVariants>"/></param> /// <param name="turtleFileName"> путь к внешнему файлу ttl</param> public static void TestReadTtl_Cocor(this IGraph <Triple <string, string, ObjectVariants> > graph, string turtleFileName) { Performance.ComputeTime(() => graph.Build(new TripleGeneratorBufferedParallel(turtleFileName, "g")), "build " + turtleFileName + " ", true); }