!7 p { int runs = 5; S mainJava = //[[print("hello!");]]; //loadSnippet(#759); // doesn't work, requires different transpiler loadSnippet(#1016478); // transpile the OS mainJava = dropTranslators(mainJava); S transpiled, transpiled2; new L times; bool resultsDiffer; maximizeConsole(); O transpiler = hotwireDependent(#759); setAll(transpiler, dontLoadCachedIncludesFromVM := true, //cacheStdFunctions := false, //cacheStdClasses := false ); time "First run" { set(transpiler, +mainJava); callMain(transpiler); transpiled = (S) get(transpiler, 'mainJava); } long time1 = lastTiming(); call(transpiler, 'forgetCachedIncludes); // Now we should have cached all the snippets, but not the pre-transpiled stuff. for (int run = 2; run <= runs; run++) { S msg = "Run " + run; time msg { set(transpiler, +mainJava); callMain(transpiler); transpiled2 = (S) get(transpiler, 'mainJava); if (neq(transpiled, transpiled2)) { set resultsDiffer; print("WARNING: RESULTS DIFFER"); print(unidiff(transpiled, transpiled2)); } } times.add(lastTiming()); } print("Made " + nChars(transpiled) + ", md5: " + md5(transpiled)); print("Run 1 with downloads: " + time1 + " ms"); int run = 2; for (long time : times) print("Run " + (run++) + " w/o downloads: " + time + " ms"); if (resultsDiffer) print("WARNING: RESULTS DIFFER BETWEEN RUNS"); }