(String[] args)
| 37 | } |
| 38 | |
| 39 | public static void main(String[] args) throws Exception { |
| 40 | LangDescriptor[] languages = new LangDescriptor[] { |
| 41 | JAVA_DESCR, |
| 42 | JAVA8_DESCR, |
| 43 | // JAVA_GUAVA_DESCR, |
| 44 | // JAVA8_GUAVA_DESCR, |
| 45 | ANTLR4_DESCR, |
| 46 | SQLITE_CLEAN_DESCR, |
| 47 | TSQL_CLEAN_DESCR, |
| 48 | }; |
| 49 | |
| 50 | int MAX_K = 98; // should be odd |
| 51 | int OUTLIER_K = 99; |
| 52 | List<Integer> ks = new ArrayList<>(); |
| 53 | for (int i = 1; i<=MAX_K; i+=2) { |
| 54 | ks.add(i); |
| 55 | } |
| 56 | ks.add(OUTLIER_K); |
| 57 | // track medians[language][k] |
| 58 | Float[][] medians = new Float[languages.length+1][]; |
| 59 | |
| 60 | int ncpu = Runtime.getRuntime().availableProcessors(); |
| 61 | if ( FORCE_SINGLE_THREADED ) { |
| 62 | ncpu = 2; |
| 63 | } |
| 64 | ExecutorService pool = Executors.newFixedThreadPool(ncpu-1); |
| 65 | List<Callable<Void>> jobs = new ArrayList<>(); |
| 66 | |
| 67 | for (int i = 0; i<languages.length; i++) { |
| 68 | final LangDescriptor language = languages[i]; |
| 69 | final int langIndex = i; |
| 70 | System.out.println(language.name); |
| 71 | for (int k : ks) { |
| 72 | medians[langIndex] = new Float[OUTLIER_K+1]; |
| 73 | Callable<Void> job = () -> { |
| 74 | try { |
| 75 | TestK tester = new TestK(language.corpusDir, language, k); |
| 76 | List<Float> errorRates = tester.scoreDocuments(); |
| 77 | Collections.sort(errorRates); |
| 78 | int n = errorRates.size(); |
| 79 | float median = errorRates.get(n/2); |
| 80 | // double var = BuffUtils.varianceFloats(errorRates); |
| 81 | // String display = String.format("%5.4f, %5.4f, %5.4f, %5.4f, %5.4f", min, quart, median, quart3, max); |
| 82 | medians[langIndex][k] = median; |
| 83 | } |
| 84 | catch (Throwable t) { |
| 85 | t.printStackTrace(System.err); |
| 86 | } |
| 87 | return null; |
| 88 | }; |
| 89 | jobs.add(job); |
| 90 | } |
| 91 | } |
| 92 | |
| 93 | pool.invokeAll(jobs); |
| 94 | pool.shutdown(); |
| 95 | boolean terminated = pool.awaitTermination(60, TimeUnit.MINUTES); |
| 96 |
nothing calls this directly
no test coverage detected