From 2f65506d765925a6a6d552e5c2b8a280f7cf3ed2 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 22 Apr 2013 14:05:03 +0400 Subject: [PATCH] Support time measurement --- .../jetbrains/jet/preloading/Preloader.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/compiler/preloader/src/org/jetbrains/jet/preloading/Preloader.java b/compiler/preloader/src/org/jetbrains/jet/preloading/Preloader.java index d2cb3a1ab9e..4132cd885ff 100644 --- a/compiler/preloader/src/org/jetbrains/jet/preloading/Preloader.java +++ b/compiler/preloader/src/org/jetbrains/jet/preloading/Preloader.java @@ -6,8 +6,10 @@ import java.util.Arrays; public class Preloader { + public static final int PRELOADER_ARG_COUNT = 4; + public static void main(String[] args) throws Exception { - if (args.length < 3) { + if (args.length < PRELOADER_ARG_COUNT) { printUsageAndExit(); } @@ -29,6 +31,9 @@ public class Preloader { return; } + boolean printTime = parseMeasureTime(args[3]); + long startTime = System.nanoTime(); + ClassLoader parent = Preloader.class.getClassLoader(); ClassLoader preloaded = ClassPreloadingUtils.preloadClasses(file, classNumber, parent); @@ -36,11 +41,24 @@ public class Preloader { Class mainClass = preloaded.loadClass(mainClassCanonicalName); Method mainMethod = mainClass.getMethod("main", String[].class); - mainMethod.invoke(0, new Object[] {Arrays.copyOfRange(args, 2, args.length)}); + mainMethod.invoke(0, new Object[] {Arrays.copyOfRange(args, PRELOADER_ARG_COUNT, args.length)}); + + if (printTime) { + long dt = System.nanoTime() - startTime; + System.out.format("Total time: %.3fs\n", dt / 1e9); + } + } + + private static boolean parseMeasureTime(String arg) { + if ("time".equals(arg)) return true; + if ("notime".equals(arg)) return true; + System.out.println("Unrecognized argument: " + arg); + printUsageAndExit(); + return false; } private static void printUsageAndExit() { - System.out.println("Usage: Preloader
"); + System.out.println("Usage: Preloader
"); System.exit(1); } }