/** * Crea una tabella sull'output out, per tutti i generi di sequenze, eseguendo tutti gli algoritmi * su array di lunghezze via via crescenti, da step fino a maxLength */ static void makeTable(EnumSet<Algorithm> algorithms, int step, int maxLength, String fileName) throws IOException { ; FileWriter outFile = new FileWriter(fileName, false); PrintWriter writer = new PrintWriter(outFile); writer.println("sep=;"); writer.println( "Test a on a int array: " + getProperty("os.name") + " Java " + getProperty("java.version")); for (SequenceKind kind : SequenceKind.values()) { writer.println(kind.toString()); System.out.println(kind.toString() + "\n"); for (Algorithm algo : algorithms) writer.print(";" + algo.toString()); writer.println(); for (int len = step; len <= maxLength; len += step) { runAllAlgorithms(algorithms, kind, writer, len); } writer.println(); } writer.close(); System.out.println(); System.out.println(); }
private static void printResult(List<Point> pointList, List<Algorithm> algorithms) { for (Algorithm algorithm : algorithms) { Result r = algorithm.run(pointList); r.stop(); System.err.println(algorithm.toString()); System.err.println("Time: " + r.getTime()); System.err.println("Iterations: " + r.getIterationCount()); for (RoundResult rr : r.getResultsToReport()) { System.err.println(rr.printResult()); } // System.out.println(r.getBestResult().print(true)); System.err.println(); } }
/** * Crea una riga della tabella sull'output out, per sequenze di genere kind, eseguendo tutti gli * algoritmi algorithms, su un array di lunghezza len */ static void runAllAlgorithms( EnumSet<Algorithm> algorithms, SequenceKind kind, PrintWriter out, int len) { int maxValue = (kind == SequenceKind.REPEATED_VALUES) ? len / 3 : 9 * len / 10; int[] array = naturalRandomArray(len, maxValue); if (kind == SequenceKind.ALMOST_SORTED) { Arrays.sort(array); swap(array, len / 3, 2 * len / 3); } out.printf("%6d;", len); System.out.println(len); for (Algorithm algo : algorithms) { System.out.println(algo.toString()); int[] arrayCopy = Arrays.copyOf(array, array.length); double time = executionTime(algo, arrayCopy); out.printf("%9.2f;", time); } out.println(); System.out.println(); }
/** * Sets the algorithm used to perform cryptographic signing and/or encryption on the JWT. * * @param algorithm The Algorithm. */ public void setAlgorithm(Algorithm algorithm) { put(ALG.value(), algorithm.toString()); }