@Test publicvoidperf()throws IOException { // use sa longi= System.currentTimeMillis(); List<String> A = Files.readAllLines(Paths.get("/Users/pfliu/data/old_data/A.txt")); SuffixArraysa= SuffixArray.build(newHashSet<>(A));
intright=0; intwrong=0; List<String> B = Files.readAllLines(Paths.get("/Users/pfliu/data/old_data/B.txt")); for (String s : B) { if (sa.saContains(s)) { right++; } else { wrong++; } } log.info("use sa. all={}, right={}, wrong={}. time={}", B.size(), right, wrong, System.currentTimeMillis() - i);
// violence wrong = 0; right = 0; //count intcount=0; longtime= System.currentTimeMillis(); for (String s : B) { booleanflag=false; for (String s1 : A) { if (s1.contains(s)) { flag = true; right++; break; } } if (!flag) wrong++; if (++count % 1000 == 0) { log.info("use biolence. deal {} word. now right ={}, wrong ={}, time={}", count, right, wrong, System.currentTimeMillis() - time); time = System.currentTimeMillis(); } } }
这里是输出部分日志(我没有等待暴力解法跑完):
1 2 3 4 5 6 7 8 9 10 11
16:29:35.440 [main] INFO com.huyan.sa.SuffixArrayTest - use sa. all=815971, right=433402, wrong=382569. time=35371 16:29:49.748 [main] INFO com.huyan.sa.SuffixArrayTest - use biolence. deal 1000 word. now right =855, wrong =145, time=14301 16:30:11.807 [main] INFO com.huyan.sa.SuffixArrayTest - use biolence. deal 2000 word. now right =1625, wrong =375, time=22059 16:30:38.272 [main] INFO com.huyan.sa.SuffixArrayTest - use biolence. deal 3000 word. now right =2343, wrong =657, time=26465 16:31:07.080 [main] INFO com.huyan.sa.SuffixArrayTest - use biolence. deal 4000 word. now right =3019, wrong =981, time=28808 16:31:36.550 [main] INFO com.huyan.sa.SuffixArrayTest - use biolence. deal 5000 word. now right =3700, wrong =1300, time=29470 16:32:07.141 [main] INFO com.huyan.sa.SuffixArrayTest - use biolence. deal 6000 word. now right =4365, wrong =1635, time=30590 16:32:39.338 [main] INFO com.huyan.sa.SuffixArrayTest - use biolence. deal 7000 word. now right =5030, wrong =1970, time=32197 16:33:13.781 [main] INFO com.huyan.sa.SuffixArrayTest - use biolence. deal 8000 word. now right =5641, wrong =2359, time=34443 16:33:47.392 [main] INFO com.huyan.sa.SuffixArrayTest - use biolence. deal 9000 word. now right =6269, wrong =2731, time=33611 16:34:21.783 [main] INFO com.huyan.sa.SuffixArrayTest - use biolence. deal 10000 word. now right =6878, wrong =3122, time=34391