| Index: dart/compiler/java/com/google/dart/compiler/metrics/CompilerMetrics.java
|
| diff --git a/dart/compiler/java/com/google/dart/compiler/metrics/CompilerMetrics.java b/dart/compiler/java/com/google/dart/compiler/metrics/CompilerMetrics.java
|
| deleted file mode 100644
|
| index 3f7d9380f6c6b32e2538b37364d13ddfb0d086ee..0000000000000000000000000000000000000000
|
| --- a/dart/compiler/java/com/google/dart/compiler/metrics/CompilerMetrics.java
|
| +++ /dev/null
|
| @@ -1,197 +0,0 @@
|
| -// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -package com.google.dart.compiler.metrics;
|
| -
|
| -import java.io.PrintStream;
|
| -import java.lang.management.ManagementFactory;
|
| -import java.lang.management.ThreadMXBean;
|
| -import java.util.concurrent.atomic.AtomicLong;
|
| -
|
| -/**
|
| - * Collection of compiler metrics.
|
| - */
|
| -public final class CompilerMetrics {
|
| - // TODO: Consider refactoring this class so each subsystem has it own metrics class.
|
| -
|
| - public static long getCPUTime() {
|
| - return System.currentTimeMillis() * 1000000;
|
| - }
|
| - /**
|
| - * Returns the current thread's CPU time or -1 if this is not supported.
|
| - */
|
| - public static long getThreadTime() {
|
| - ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
|
| - if (threadMXBean.isThreadCpuTimeSupported()) {
|
| - return threadMXBean.getCurrentThreadCpuTime();
|
| - }
|
| -
|
| - return -1;
|
| - }
|
| -
|
| - private static double nanoToMillis(long nanoTime) {
|
| - return nanoTime / 1000000.0d;
|
| - }
|
| - private AtomicLong charactersParsed = new AtomicLong();
|
| - private AtomicLong charactersParsedExcludingComments = new AtomicLong();
|
| - private long compileLibrariesTime = 0L;
|
| - private long compileLibrariesTimeStart = 0L;
|
| - private AtomicLong linesParsed = new AtomicLong();
|
| - private AtomicLong linesParsedExcludingComments = new AtomicLong();
|
| -
|
| - private long milliEndTime = -1;
|
| - private final long milliStartTime;
|
| -
|
| - private long nanoParseWallTime = 0;
|
| - private AtomicLong nanoTotalParseTime = new AtomicLong();
|
| - private long nativeLibCharCount;
|
| -
|
| - // Parser metrics
|
| - private AtomicLong unitsParsed = new AtomicLong();
|
| -
|
| - private long updateAndResolveTime = 0L;
|
| -
|
| - // Timing metrics for complete stages
|
| - private long updateAndResolveTimeStart = 0L;
|
| -
|
| - public CompilerMetrics() {
|
| - this.milliStartTime = System.currentTimeMillis();
|
| - }
|
| -
|
| - /**
|
| - * Accumulate more parsing time. TODO: Once the parser gets cleaned up we should be able to
|
| - * integrate this with unit parsed.
|
| - */
|
| - public void addParseTimeNano(long nanoTotalParseTime) {
|
| - this.nanoTotalParseTime.addAndGet(nanoTotalParseTime);
|
| - }
|
| -
|
| - public void addParseWallTimeNano( long nanoWallParseTime) {
|
| - this.nanoParseWallTime = nanoWallParseTime;
|
| - }
|
| -
|
| - public void done() {
|
| - if (milliEndTime == -1) {
|
| - milliEndTime = System.currentTimeMillis();
|
| - }
|
| - }
|
| -
|
| - public void endCompileLibrariesTime() {
|
| - compileLibrariesTime = System.currentTimeMillis() - compileLibrariesTimeStart;
|
| - }
|
| -
|
| - public void endUpdateAndResolveTime() {
|
| - updateAndResolveTime = System.currentTimeMillis() - updateAndResolveTimeStart;
|
| - }
|
| -
|
| - public long getCompileLibrariesTime() {
|
| - return compileLibrariesTime;
|
| - }
|
| -
|
| - public long getJSNativeLibCharSize() {
|
| - return nativeLibCharCount;
|
| - }
|
| -
|
| - public double getLinesPerMS() {
|
| - return getNumLinesParsed() / getTotalCompilationTime();
|
| - }
|
| -
|
| - public double getNonCommentLinesPerMS() {
|
| - return getNumNonCommentLines() / getTotalCompilationTime();
|
| - }
|
| -
|
| - public long getNumCharsParsed() {
|
| - return charactersParsed.get();
|
| - }
|
| -
|
| - public long getNumLinesParsed() {
|
| - return linesParsed.get();
|
| - }
|
| -
|
| - public long getNumNonCommentChars() {
|
| - return charactersParsedExcludingComments.get();
|
| - }
|
| -
|
| - public long getNumNonCommentLines() {
|
| - return linesParsedExcludingComments.get();
|
| - }
|
| -
|
| - public double getNumUnitsParsed() {
|
| - return unitsParsed.get();
|
| - }
|
| -
|
| - public double getParseTime() {
|
| - return nanoToMillis(nanoTotalParseTime.get());
|
| - }
|
| -
|
| - public double getParseWallTime() {
|
| - return nanoToMillis(nanoParseWallTime);
|
| - }
|
| -
|
| - public double getPercentCharsConsumedByNativeLibraries() {
|
| - return (getJSNativeLibCharSize() / getNumCharsParsed()) * 100d;
|
| - }
|
| -
|
| - public double getPercentTimeParsing() {
|
| - return getParseTime() / getTotalCompilationTime();
|
| - }
|
| -
|
| - public double getTimeSpentPerUnit() {
|
| - if (getNumUnitsParsed() == 0) {
|
| - return 0;
|
| - }
|
| - return getTotalCompilationTime() / getNumUnitsParsed();
|
| - }
|
| -
|
| - public double getTotalCompilationTime() {
|
| - return milliEndTime - milliStartTime;
|
| - }
|
| -
|
| - public long getUpdateAndResolveTime() {
|
| - return updateAndResolveTime;
|
| - }
|
| -
|
| - public void startCompileLibrariesTime() {
|
| - compileLibrariesTimeStart = System.currentTimeMillis();
|
| - }
|
| -
|
| - public void startUpdateAndResolveTime() {
|
| - updateAndResolveTimeStart = System.currentTimeMillis();
|
| - }
|
| -
|
| - public void unitParsed(int charactersParsed, int charactersParsedExcludingComments,
|
| - int linesParsed, int linesParsedExcludingComments) {
|
| - this.unitsParsed.incrementAndGet();
|
| - this.charactersParsed.addAndGet(charactersParsed);
|
| - this.charactersParsedExcludingComments.addAndGet(charactersParsedExcludingComments);
|
| - this.linesParsed.addAndGet(linesParsed);
|
| - this.linesParsedExcludingComments.addAndGet(linesParsedExcludingComments);
|
| - }
|
| -
|
| - /**
|
| - * Writes the metrics to the {@link PrintStream}.
|
| - */
|
| - public void write(PrintStream out) {
|
| - /* This is mainly for the metrics system. Units should be encoded in
|
| - * the label name and end up as the benchmark names.
|
| - */
|
| - done();
|
| - out.format("Compile-time-total-ms : %1$.2f%n", getTotalCompilationTime());
|
| - out.format("# Update-and-resolve-time-ms : %d\n", getUpdateAndResolveTime());
|
| - out.format("# Compile-libraries-time-ms : %d\n", getCompileLibrariesTime());
|
| - out.println("# Compile-time-unit-average-ms : " + getTimeSpentPerUnit());
|
| - out.format("# Parse-wall-time-ms : %1$.2f%n", getParseWallTime());
|
| - out.format("# Parse-time-ms : %1$.2f%n", getParseTime());
|
| - out.println("# Parsed-units : " + getNumUnitsParsed());
|
| - out.println("# Parsed-src-chars : " + getNumCharsParsed());
|
| - out.println("# Parsed-src-lines : " + getNumLinesParsed());
|
| - out.println("# Parsed-code-chars : " + getNumNonCommentChars());
|
| - out.println("# Parsed-code-lines : " + getNumNonCommentLines());
|
| - double jsNativeLibCharSize = (getJSNativeLibCharSize() == -1) ? 0 : getJSNativeLibCharSize();
|
| - out.println("# Output-js-native-lib-chars : " + jsNativeLibCharSize );
|
| - out.println("# Processed-total-lines-ms : " + getLinesPerMS());
|
| - out.println("# Processed-code-lines-ms : " + getNonCommentLinesPerMS());
|
| - out.println("# Ratio-parsing-compile-percent : " + getPercentTimeParsing() * 100);
|
| - }
|
| -}
|
|
|