blob: eae43b1ecd4b56e2de94e84ce1c2769672ba546d [file] [log] [blame]
Nils Diewaldefb9c9a2014-02-20 15:05:18 +00001package de.ids_mannheim.korap.benchmark;
2
3import java.util.*;
4import java.io.*;
5
Nils Diewalda14ecd62015-02-26 21:00:20 +00006import de.ids_mannheim.korap.KrillIndex;
Nils Diewaldefb9c9a2014-02-20 15:05:18 +00007import de.ids_mannheim.korap.index.FieldDocument;
Nils Diewald2d5f8102015-02-26 21:07:54 +00008import de.ids_mannheim.korap.KrillCollection;
Nils Diewaldbbd39a52015-02-23 19:56:57 +00009import de.ids_mannheim.korap.Krill;
Nils Diewald884dbcf2015-02-27 17:02:28 +000010import de.ids_mannheim.korap.response.Result;
Nils Diewald0339d462015-02-26 14:53:56 +000011import de.ids_mannheim.korap.KrillQuery;
Nils Diewald8904c1d2015-02-26 16:13:18 +000012import de.ids_mannheim.korap.query.QueryBuilder;
Nils Diewaldefb9c9a2014-02-20 15:05:18 +000013import org.apache.lucene.store.MMapDirectory;
Nils Diewaldefb9c9a2014-02-20 15:05:18 +000014import org.apache.lucene.search.spans.SpanQuery;
Nils Diewald92729ce2014-10-06 16:00:17 +000015import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
Nils Diewaldefb9c9a2014-02-20 15:05:18 +000016import de.ids_mannheim.korap.util.QueryException;
17
18import static org.junit.Assert.*;
19import org.junit.Test;
20import org.junit.Ignore;
21import org.junit.runner.RunWith;
22import org.junit.runners.JUnit4;
23
Akron700c1eb2015-09-25 16:57:30 +020024import java.nio.file.Paths;
25
Nils Diewaldefb9c9a2014-02-20 15:05:18 +000026@RunWith(JUnit4.class)
Nils Diewaldc025a232014-02-28 19:01:14 +000027public class TestBenchmarkSpans {
Nils Diewaldefb9c9a2014-02-20 15:05:18 +000028
29 @Test
Nils Diewald82a4b862014-02-20 21:17:41 +000030 public void checkBenchmark1 () throws IOException {
Nils Diewald6409a922015-01-29 20:50:42 +000031 Properties prop = new Properties();
Eliza Margaretha6f989202016-10-14 21:48:29 +020032 InputStream fr = new FileInputStream(
33 getClass().getResource("/krill.properties").getFile());
Nils Diewald6409a922015-01-29 20:50:42 +000034 prop.load(fr);
Nils Diewaldefb9c9a2014-02-20 15:05:18 +000035
Nils Diewald6409a922015-01-29 20:50:42 +000036 // Get the real index
Eliza Margaretha6f989202016-10-14 21:48:29 +020037 KrillIndex ki = new KrillIndex(new MMapDirectory(
38 Paths.get(prop.getProperty("krill.indexDir"))));
Nils Diewaldefb9c9a2014-02-20 15:05:18 +000039
Nils Diewald6409a922015-01-29 20:50:42 +000040 // Create a container for virtual collections:
Nils Diewald2d5f8102015-02-26 21:07:54 +000041 KrillCollection kc = new KrillCollection(ki);
Nils Diewaldefb9c9a2014-02-20 15:05:18 +000042
Nils Diewald6409a922015-01-29 20:50:42 +000043 long t1 = 0, t2 = 0;
44 /// cosmas20.json!!!
Eliza Margaretha6f989202016-10-14 21:48:29 +020045 String json = getString(
46 getClass().getResource("/queries/benchmark1.jsonld").getFile());
Nils Diewald82a4b862014-02-20 21:17:41 +000047
Nils Diewald6409a922015-01-29 20:50:42 +000048 int rounds = 100;
Nils Diewald82a4b862014-02-20 21:17:41 +000049
Nils Diewald884dbcf2015-02-27 17:02:28 +000050 Result kr = new Result();
Nils Diewald82a4b862014-02-20 21:17:41 +000051
Nils Diewald6409a922015-01-29 20:50:42 +000052 t1 = System.nanoTime();
53 for (int i = 1; i <= rounds; i++) {
Nils Diewaldbbd39a52015-02-23 19:56:57 +000054 kr = new Krill(json).apply(ki);
Nils Diewald6409a922015-01-29 20:50:42 +000055 };
56 t2 = System.nanoTime();
Nils Diewaldefb9c9a2014-02-20 15:05:18 +000057
Nils Diewald6409a922015-01-29 20:50:42 +000058 // assertEquals("TotalResults", 30751, kr.getTotalResults());
Nils Diewaldbb33da22015-03-04 16:24:25 +000059 assertEquals("TotalResults", kr.getTotalResults(), 4803739);
Nils Diewald82a4b862014-02-20 21:17:41 +000060
Nils Diewald6409a922015-01-29 20:50:42 +000061 // long seconds = (long) (t2 - t1 / 1000) % 60 ;
Nils Diewaldbb33da22015-03-04 16:24:25 +000062 double seconds = (double) (t2 - t1) / 1000000000.0;
63
Nils Diewald6409a922015-01-29 20:50:42 +000064 // System.out.println("It took " + seconds + " seconds");
Nils Diewaldefb9c9a2014-02-20 15:05:18 +000065
Nils Diewald6409a922015-01-29 20:50:42 +000066 // 100 times:
67 // 43,538 sec
68 // 4.874
Nils Diewaldbb33da22015-03-04 16:24:25 +000069
Nils Diewald6409a922015-01-29 20:50:42 +000070 // 1000 times:
71 // 36.613 sec
Nils Diewaldefb9c9a2014-02-20 15:05:18 +000072
Nils Diewald6409a922015-01-29 20:50:42 +000073 // After refactoring
74 // 100 times
75 // 273.58114372 seconds
Nils Diewaldbb33da22015-03-04 16:24:25 +000076
Nils Diewald6409a922015-01-29 20:50:42 +000077 // After intro of attributes
78 // 100 times
79 // 350.171506379 seconds
Nils Diewaldefb9c9a2014-02-20 15:05:18 +000080 };
81
Nils Diewald82a4b862014-02-20 21:17:41 +000082
83 @Test
84 public void checkBenchmark2JSON () throws IOException {
Nils Diewald6409a922015-01-29 20:50:42 +000085 Properties prop = new Properties();
Eliza Margaretha6f989202016-10-14 21:48:29 +020086 InputStream fr = new FileInputStream(
87 getClass().getResource("/krill.properties").getFile());
Nils Diewald6409a922015-01-29 20:50:42 +000088 prop.load(fr);
Nils Diewald82a4b862014-02-20 21:17:41 +000089
Nils Diewald6409a922015-01-29 20:50:42 +000090 // Get the real index
Eliza Margaretha6f989202016-10-14 21:48:29 +020091 KrillIndex ki = new KrillIndex(new MMapDirectory(
92 Paths.get(prop.getProperty("krill.indexDir"))));
Nils Diewaldbb33da22015-03-04 16:24:25 +000093
Nils Diewald6409a922015-01-29 20:50:42 +000094 // Create a container for virtual collections:
Nils Diewald2d5f8102015-02-26 21:07:54 +000095 KrillCollection kc = new KrillCollection(ki);
Nils Diewald82a4b862014-02-20 21:17:41 +000096
Nils Diewald6409a922015-01-29 20:50:42 +000097 long t1 = 0, t2 = 0;
98 /// cosmas20.json!!!
Eliza Margaretha6f989202016-10-14 21:48:29 +020099 String json = getString(
100 getClass().getResource("/queries/benchmark2.jsonld").getFile());
Nils Diewaldbb33da22015-03-04 16:24:25 +0000101
Nils Diewald6409a922015-01-29 20:50:42 +0000102 int rounds = 10000;
Nils Diewaldbb33da22015-03-04 16:24:25 +0000103
Nils Diewald884dbcf2015-02-27 17:02:28 +0000104 Result kr = new Result();
Nils Diewald6409a922015-01-29 20:50:42 +0000105 String result = new String("");
Nils Diewaldbb33da22015-03-04 16:24:25 +0000106
Nils Diewald6409a922015-01-29 20:50:42 +0000107 t1 = System.nanoTime();
108 double length = 0;
109 for (int i = 1; i <= rounds; i++) {
Nils Diewaldbbd39a52015-02-23 19:56:57 +0000110 kr = new Krill(json).apply(ki);
Nils Diewald6409a922015-01-29 20:50:42 +0000111 length += kr.toJsonString().length();
112 };
113 t2 = System.nanoTime();
Nils Diewald82a4b862014-02-20 21:17:41 +0000114
Nils Diewald6409a922015-01-29 20:50:42 +0000115 // assertEquals("TotalResults", 30751, kr.getTotalResults());
Nils Diewald82a4b862014-02-20 21:17:41 +0000116
Nils Diewald6409a922015-01-29 20:50:42 +0000117 // System.err.println(kr.toJSON());
Nils Diewald82a4b862014-02-20 21:17:41 +0000118
Nils Diewald6409a922015-01-29 20:50:42 +0000119 // long seconds = (long) (t2 - t1 / 1000) % 60 ;
Nils Diewaldbb33da22015-03-04 16:24:25 +0000120 double seconds = (double) (t2 - t1) / 1000000000.0;
121
Nils Diewald6409a922015-01-29 20:50:42 +0000122 // System.out.println("It took " + seconds + " seconds");
Nils Diewald82a4b862014-02-20 21:17:41 +0000123
Nils Diewald6409a922015-01-29 20:50:42 +0000124 // 10000 times:
125 // 77.167124985 sec
Nils Diewald82a4b862014-02-20 21:17:41 +0000126 };
127
Nils Diewald8c543432014-02-27 18:25:38 +0000128
129 @Test
130 public void checkBenchmarkSentences () throws IOException {
Nils Diewald6409a922015-01-29 20:50:42 +0000131 Properties prop = new Properties();
Eliza Margaretha6f989202016-10-14 21:48:29 +0200132 InputStream fr = new FileInputStream(
133 getClass().getResource("/krill.properties").getFile());
Nils Diewald6409a922015-01-29 20:50:42 +0000134 prop.load(fr);
Nils Diewald8c543432014-02-27 18:25:38 +0000135
Nils Diewald6409a922015-01-29 20:50:42 +0000136 // Get the real index
Eliza Margaretha6f989202016-10-14 21:48:29 +0200137 KrillIndex ki = new KrillIndex(new MMapDirectory(
138 Paths.get(prop.getProperty("krill.indexDir"))));
Nils Diewald8c543432014-02-27 18:25:38 +0000139
Nils Diewald6409a922015-01-29 20:50:42 +0000140 // Create a container for virtual collections:
Nils Diewald2d5f8102015-02-26 21:07:54 +0000141 KrillCollection kc = new KrillCollection(ki);
Nils Diewald8c543432014-02-27 18:25:38 +0000142
Nils Diewald6409a922015-01-29 20:50:42 +0000143 long t1 = 0, t2 = 0;
144 /// cosmas20.json!!!
Eliza Margaretha6f989202016-10-14 21:48:29 +0200145 String json = getString(
146 getClass().getResource("/queries/benchmark4.jsonld").getFile());
Nils Diewald8c543432014-02-27 18:25:38 +0000147
Nils Diewald6409a922015-01-29 20:50:42 +0000148 int rounds = 10;
Nils Diewald8c543432014-02-27 18:25:38 +0000149
Nils Diewald884dbcf2015-02-27 17:02:28 +0000150 Result kr = new Result();
Nils Diewald8c543432014-02-27 18:25:38 +0000151
Nils Diewald6409a922015-01-29 20:50:42 +0000152 t1 = System.nanoTime();
153 double length = 0;
154 for (int i = 1; i <= rounds; i++) {
Nils Diewaldbbd39a52015-02-23 19:56:57 +0000155 kr = new Krill(json).apply(ki);
Nils Diewald6409a922015-01-29 20:50:42 +0000156 };
157 t2 = System.nanoTime();
Nils Diewald8c543432014-02-27 18:25:38 +0000158
Nils Diewald6409a922015-01-29 20:50:42 +0000159 // System.err.println(kr.getMatch(0).toJSON());
Nils Diewald8c543432014-02-27 18:25:38 +0000160
Nils Diewaldbb33da22015-03-04 16:24:25 +0000161 assertEquals("TotalResults1", kr.getTotalResults(), 4116282);
162 assertEquals("TotalResults2", kr.getTotalResults(),
163 ki.numberOf("sentences"));
164
165 double seconds = (double) (t2 - t1) / 1000000000.0;
166
Nils Diewald6409a922015-01-29 20:50:42 +0000167 // System.out.println("It took " + seconds + " seconds");
168 // 100 rounds
169 // 56.253 secs
Nils Diewald8c543432014-02-27 18:25:38 +0000170 };
171
Nils Diewaldbb33da22015-03-04 16:24:25 +0000172
Nils Diewald82a4b862014-02-20 21:17:41 +0000173 @Test
Nils Diewaldc025a232014-02-28 19:01:14 +0000174 public void checkBenchmarkClasses () throws IOException {
Nils Diewald6409a922015-01-29 20:50:42 +0000175 // [orth=Der]{1:[orth=Mann]{2:[orth=und]}}
Nils Diewaldc025a232014-02-28 19:01:14 +0000176
Nils Diewald6409a922015-01-29 20:50:42 +0000177 Properties prop = new Properties();
Eliza Margaretha6f989202016-10-14 21:48:29 +0200178 InputStream fr = new FileInputStream(
179 getClass().getResource("/krill.properties").getFile());
Nils Diewald6409a922015-01-29 20:50:42 +0000180 prop.load(fr);
Nils Diewaldc025a232014-02-28 19:01:14 +0000181
Nils Diewald6409a922015-01-29 20:50:42 +0000182 // Get the real index
Eliza Margaretha6f989202016-10-14 21:48:29 +0200183 KrillIndex ki = new KrillIndex(new MMapDirectory(
184 Paths.get(prop.getProperty("krill.indexDir"))));
Nils Diewaldc025a232014-02-28 19:01:14 +0000185
Nils Diewald6409a922015-01-29 20:50:42 +0000186 // Create a container for virtual collections:
Nils Diewald2d5f8102015-02-26 21:07:54 +0000187 KrillCollection kc = new KrillCollection(ki);
Nils Diewaldc025a232014-02-28 19:01:14 +0000188
Nils Diewald6409a922015-01-29 20:50:42 +0000189 long t1 = 0, t2 = 0;
190 // Without classes
Eliza Margaretha6f989202016-10-14 21:48:29 +0200191 String json = getString(getClass()
192 .getResource("/queries/benchmark5-ohne.jsonld").getFile());
Nils Diewaldc025a232014-02-28 19:01:14 +0000193
Nils Diewald6409a922015-01-29 20:50:42 +0000194 int rounds = 2000;
Nils Diewaldbb33da22015-03-04 16:24:25 +0000195
Nils Diewald884dbcf2015-02-27 17:02:28 +0000196 Result kr = new Result();
Nils Diewaldc025a232014-02-28 19:01:14 +0000197
Nils Diewald6409a922015-01-29 20:50:42 +0000198 t1 = System.nanoTime();
199 for (int i = 1; i <= rounds; i++) {
Nils Diewaldbbd39a52015-02-23 19:56:57 +0000200 kr = new Krill(json).apply(ki);
Nils Diewald6409a922015-01-29 20:50:42 +0000201 };
202 t2 = System.nanoTime();
Nils Diewaldc025a232014-02-28 19:01:14 +0000203
Nils Diewaldbb33da22015-03-04 16:24:25 +0000204 double seconds = (double) (t2 - t1) / 1000000000.0;
205
Nils Diewald6409a922015-01-29 20:50:42 +0000206 // System.out.println("It took " + seconds + " seconds without classes");
Nils Diewaldc025a232014-02-28 19:01:14 +0000207
Nils Diewald6409a922015-01-29 20:50:42 +0000208 t1 = 0;
209 t2 = 0;
210 // With classes
Eliza Margaretha6f989202016-10-14 21:48:29 +0200211 json = getString(
212 getClass().getResource("/queries/benchmark5.jsonld").getFile());
Nils Diewaldbb33da22015-03-04 16:24:25 +0000213
Nils Diewald6409a922015-01-29 20:50:42 +0000214 t1 = System.nanoTime();
215 for (int i = 1; i <= rounds; i++) {
Nils Diewaldbbd39a52015-02-23 19:56:57 +0000216 kr = new Krill(json).apply(ki);
Nils Diewald6409a922015-01-29 20:50:42 +0000217 };
218 t2 = System.nanoTime();
Nils Diewaldc025a232014-02-28 19:01:14 +0000219
Nils Diewaldbb33da22015-03-04 16:24:25 +0000220 seconds = (double) (t2 - t1) / 1000000000.0;
221
Nils Diewald6409a922015-01-29 20:50:42 +0000222 // System.out.println("It took " + seconds + " seconds with classes");
Nils Diewaldc025a232014-02-28 19:01:14 +0000223
Nils Diewald6409a922015-01-29 20:50:42 +0000224 t1 = 0;
225 t2 = 0;
226 // With submatch
Eliza Margaretha6f989202016-10-14 21:48:29 +0200227 json = getString(getClass()
228 .getResource("/queries/benchmark5-submatch.jsonld").getFile());
Nils Diewaldc025a232014-02-28 19:01:14 +0000229
Nils Diewald6409a922015-01-29 20:50:42 +0000230 t1 = System.nanoTime();
231 for (int i = 1; i <= rounds; i++) {
Nils Diewaldbbd39a52015-02-23 19:56:57 +0000232 kr = new Krill(json).apply(ki);
Nils Diewald6409a922015-01-29 20:50:42 +0000233 };
234 t2 = System.nanoTime();
Nils Diewaldc025a232014-02-28 19:01:14 +0000235
Nils Diewaldbb33da22015-03-04 16:24:25 +0000236 seconds = (double) (t2 - t1) / 1000000000.0;
237
Nils Diewald6409a922015-01-29 20:50:42 +0000238 // System.out.println("It took " + seconds + " seconds with submatches");
Nils Diewald34eaa862014-06-03 10:56:27 +0000239
Nils Diewald6409a922015-01-29 20:50:42 +0000240 /** HERE IS A BUG! */
Nils Diewaldbb33da22015-03-04 16:24:25 +0000241
Nils Diewald6409a922015-01-29 20:50:42 +0000242 // System.err.println(kr.toJsonString());
Nils Diewald34eaa862014-06-03 10:56:27 +0000243
Nils Diewald6409a922015-01-29 20:50:42 +0000244 // System.err.println(kr.toJSON());
Nils Diewald34eaa862014-06-03 10:56:27 +0000245
Nils Diewald6409a922015-01-29 20:50:42 +0000246 // System.err.println(kr.getMatch(3).getSnippetBrackets());
Nils Diewald34eaa862014-06-03 10:56:27 +0000247
248
Nils Diewald6409a922015-01-29 20:50:42 +0000249 // 2000 rounds:
250 // It took 10.872934435 seconds without classes
251 // It took 22.581117396 seconds with classes
Nils Diewaldc025a232014-02-28 19:01:14 +0000252
Nils Diewald6409a922015-01-29 20:50:42 +0000253 // It took 10.703933598 seconds without classes
254 // It took 19.354674517 seconds with classes
Nils Diewaldc025a232014-02-28 19:01:14 +0000255
Nils Diewald6409a922015-01-29 20:50:42 +0000256 // It took 10.939948726 seconds without classes
257 // It took 16.998470662 seconds with classes
Nils Diewaldc025a232014-02-28 19:01:14 +0000258
Nils Diewald6409a922015-01-29 20:50:42 +0000259 // It took 10.900975837 seconds without classes
260 // It took 14.902590949 seconds with classes
Nils Diewaldc025a232014-02-28 19:01:14 +0000261
Nils Diewald6409a922015-01-29 20:50:42 +0000262 // It took 10.365989238 seconds without classes
263 // It took 13.833405885 seconds with classes
Nils Diewaldc025a232014-02-28 19:01:14 +0000264
Nils Diewald6409a922015-01-29 20:50:42 +0000265 // It took 15.368675425 seconds without classes
266 // It took 18.347603186 seconds with classes
267 // It took 15.941057294 seconds with submatches
Nils Diewaldbb33da22015-03-04 16:24:25 +0000268
Nils Diewald6409a922015-01-29 20:50:42 +0000269 // It took 15.241253549 seconds without classes
270 // It took 17.30375624 seconds with classes
271 // It took 15.367171254 seconds with submatches
Nils Diewaldc025a232014-02-28 19:01:14 +0000272 };
273
Nils Diewaldbb33da22015-03-04 16:24:25 +0000274
Nils Diewaldc025a232014-02-28 19:01:14 +0000275 @Test
Nils Diewald82a4b862014-02-20 21:17:41 +0000276 public void checkBenchmarkIndexDocuments () throws IOException {
Nils Diewald6409a922015-01-29 20:50:42 +0000277 long t1 = 0, t2 = 0;
Nils Diewald82a4b862014-02-20 21:17:41 +0000278
Nils Diewald6409a922015-01-29 20:50:42 +0000279 int rounds = 10;
Nils Diewald82a4b862014-02-20 21:17:41 +0000280
Nils Diewald6409a922015-01-29 20:50:42 +0000281 ArrayList<String> docs = new ArrayList<String>(700);
Nils Diewald82a4b862014-02-20 21:17:41 +0000282
Nils Diewald6409a922015-01-29 20:50:42 +0000283 for (int a = 0; a < 50; a++) {
Nils Diewaldbb33da22015-03-04 16:24:25 +0000284 for (String d : new String[] { "00001", "00002", "00003", "00004",
285 "00005", "00006", "02439" }) {
Nils Diewald6409a922015-01-29 20:50:42 +0000286 docs.add(d);
287 };
288 };
Nils Diewald82a4b862014-02-20 21:17:41 +0000289
Nils Diewald6409a922015-01-29 20:50:42 +0000290 t1 = System.nanoTime();
291 double length = 0;
292 for (int i = 1; i <= rounds; i++) {
293 // Construct index
Nils Diewalda14ecd62015-02-26 21:00:20 +0000294 KrillIndex ki = new KrillIndex();
Nils Diewaldbb33da22015-03-04 16:24:25 +0000295
Nils Diewald6409a922015-01-29 20:50:42 +0000296 // Indexing test files
297 for (String d : docs) {
Eliza Margaretha6f989202016-10-14 21:48:29 +0200298 FieldDocument fd = ki.addDoc(getClass()
299 .getResourceAsStream("/wiki/" + d + ".json.gz"), true);
Nils Diewald6409a922015-01-29 20:50:42 +0000300 };
301 ki.commit();
302 };
303 t2 = System.nanoTime();
Nils Diewald82a4b862014-02-20 21:17:41 +0000304
Nils Diewaldbb33da22015-03-04 16:24:25 +0000305 double seconds = (double) (t2 - t1) / 1000000000.0;
Nils Diewald6409a922015-01-29 20:50:42 +0000306 // System.out.println("It took " + seconds + " seconds");
Nils Diewald82a4b862014-02-20 21:17:41 +0000307
Nils Diewald6409a922015-01-29 20:50:42 +0000308 // 10 times / 350 docs:
309 // 36.26158006 seconds
310 // 32.52575097 seconds
311 // 31.818091536 seconds
312 // 32.055321123 seconds
313 // 32.32125959 seconds
314 // 31.726277979 seconds
315 // 31.65826188 seconds
316 // 31.287057537 seconds
Nils Diewald82a4b862014-02-20 21:17:41 +0000317 };
318
319
320 @Test
321 public void checkBenchmark3 () throws IOException {
Nils Diewald6409a922015-01-29 20:50:42 +0000322 Properties prop = new Properties();
Eliza Margaretha6f989202016-10-14 21:48:29 +0200323 InputStream fr = new FileInputStream(
324 getClass().getResource("/krill.properties").getFile());
Nils Diewald6409a922015-01-29 20:50:42 +0000325 prop.load(fr);
Nils Diewald82a4b862014-02-20 21:17:41 +0000326
Nils Diewald6409a922015-01-29 20:50:42 +0000327 // Get the real index
Eliza Margaretha6f989202016-10-14 21:48:29 +0200328 KrillIndex ki = new KrillIndex(new MMapDirectory(
329 Paths.get(prop.getProperty("krill.indexDir"))));
Nils Diewald82a4b862014-02-20 21:17:41 +0000330
Nils Diewald6409a922015-01-29 20:50:42 +0000331 // Create a container for virtual collections:
Nils Diewald2d5f8102015-02-26 21:07:54 +0000332 KrillCollection kc = new KrillCollection(ki);
Nils Diewald82a4b862014-02-20 21:17:41 +0000333
Nils Diewald6409a922015-01-29 20:50:42 +0000334 long t1 = 0, t2 = 0;
335 /// cosmas20.json!!!
Eliza Margaretha6f989202016-10-14 21:48:29 +0200336 String json = getString(
337 getClass().getResource("/queries/benchmark3.jsonld").getFile());
Nils Diewald82a4b862014-02-20 21:17:41 +0000338
Nils Diewald6409a922015-01-29 20:50:42 +0000339 int rounds = 500;
Nils Diewaldbb33da22015-03-04 16:24:25 +0000340
Nils Diewald884dbcf2015-02-27 17:02:28 +0000341 Result kr = new Result();
Nils Diewald82a4b862014-02-20 21:17:41 +0000342
Nils Diewald6409a922015-01-29 20:50:42 +0000343 t1 = System.nanoTime();
344 for (int i = 1; i <= rounds; i++) {
Nils Diewaldbbd39a52015-02-23 19:56:57 +0000345 kr = new Krill(json).apply(ki);
Nils Diewald6409a922015-01-29 20:50:42 +0000346 };
347 t2 = System.nanoTime();
Nils Diewald82a4b862014-02-20 21:17:41 +0000348
Nils Diewald6409a922015-01-29 20:50:42 +0000349 assertEquals("TotalResults", kr.getTotalResults(), 70229);
Nils Diewald82a4b862014-02-20 21:17:41 +0000350
Nils Diewald6409a922015-01-29 20:50:42 +0000351 // System.err.println(kr.toJSON());
Nils Diewald82a4b862014-02-20 21:17:41 +0000352
Nils Diewald6409a922015-01-29 20:50:42 +0000353 // long seconds = (long) (t2 - t1 / 1000) % 60 ;
Nils Diewaldbb33da22015-03-04 16:24:25 +0000354 double seconds = (double) (t2 - t1) / 1000000000.0;
355
Nils Diewald6409a922015-01-29 20:50:42 +0000356 System.out.println("It took " + seconds + " seconds");
Nils Diewald82a4b862014-02-20 21:17:41 +0000357
Nils Diewald6409a922015-01-29 20:50:42 +0000358 // 500 times:
359 // 71.715862716 seconds
Nils Diewald82a4b862014-02-20 21:17:41 +0000360 };
361
362
Nils Diewaldefb9c9a2014-02-20 15:05:18 +0000363 public static String getString (String path) {
Nils Diewald6409a922015-01-29 20:50:42 +0000364 StringBuilder contentBuilder = new StringBuilder();
365 try {
366 BufferedReader in = new BufferedReader(new FileReader(path));
367 String str;
368 while ((str = in.readLine()) != null) {
369 contentBuilder.append(str);
370 };
371 in.close();
Nils Diewaldbb33da22015-03-04 16:24:25 +0000372 }
373 catch (IOException e) {
Nils Diewald6409a922015-01-29 20:50:42 +0000374 fail(e.getMessage());
375 }
376 return contentBuilder.toString();
Nils Diewaldefb9c9a2014-02-20 15:05:18 +0000377 };
Nils Diewaldbb33da22015-03-04 16:24:25 +0000378
379
Nils Diewald6409a922015-01-29 20:50:42 +0000380 public static SpanQueryWrapper jsonQuery (String jsonFile) {
381 SpanQueryWrapper sqwi;
Nils Diewaldbb33da22015-03-04 16:24:25 +0000382
Nils Diewald6409a922015-01-29 20:50:42 +0000383 try {
384 String json = getString(jsonFile);
Akron850b46e2016-06-08 10:08:55 +0200385 sqwi = new KrillQuery("tokens").fromKoral(json);
Nils Diewald6409a922015-01-29 20:50:42 +0000386 }
387 catch (QueryException e) {
388 fail(e.getMessage());
Nils Diewald8904c1d2015-02-26 16:13:18 +0000389 sqwi = new QueryBuilder("tokens").seg("???");
Nils Diewald6409a922015-01-29 20:50:42 +0000390 };
391 return sqwi;
392 };
Nils Diewaldefb9c9a2014-02-20 15:05:18 +0000393};