Index: dart/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerBench.java |
diff --git a/dart/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerBench.java b/dart/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerBench.java |
deleted file mode 100644 |
index c7aed3dc54c9619b6115e39d28dfd8edbb2b4a01..0000000000000000000000000000000000000000 |
--- a/dart/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerBench.java |
+++ /dev/null |
@@ -1,169 +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.type; |
- |
-import com.google.dart.compiler.CommandLineOptions.CompilerOptions; |
-import com.google.dart.compiler.CompilerConfiguration; |
-import com.google.dart.compiler.DartArtifactProvider; |
-import com.google.dart.compiler.DartCompilationPhase; |
-import com.google.dart.compiler.DartCompiler; |
-import com.google.dart.compiler.DartCompilerContext; |
-import com.google.dart.compiler.DartCompilerListener; |
-import com.google.dart.compiler.DefaultCompilerConfiguration; |
-import com.google.dart.compiler.DefaultDartArtifactProvider; |
-import com.google.dart.compiler.DefaultLibrarySource; |
-import com.google.dart.compiler.LibrarySource; |
-import com.google.dart.compiler.Source; |
-import com.google.dart.compiler.UrlLibrarySource; |
-import com.google.dart.compiler.ast.DartUnit; |
-import com.google.dart.compiler.resolver.CoreTypeProvider; |
- |
-import org.kohsuke.args4j.CmdLineException; |
-import org.kohsuke.args4j.CmdLineParser; |
- |
-import java.io.CharArrayReader; |
-import java.io.CharArrayWriter; |
-import java.io.File; |
-import java.io.IOException; |
-import java.io.Reader; |
-import java.io.Writer; |
-import java.net.URI; |
-import java.util.ArrayDeque; |
-import java.util.ArrayList; |
-import java.util.Deque; |
-import java.util.List; |
-import java.util.concurrent.ConcurrentHashMap; |
- |
-/** |
- * Benchmark for the type analyzer. The benchmark will loop forever to ease profiling. |
- */ |
-public class TypeAnalyzerBench { |
- private static final double SCORE_SCALE = 1000d; |
- private static final long ROUND_DURATION_MS = 5000L; |
- |
- public static void main(String... arguments) throws CmdLineException, IOException { |
- CompilerOptions compilerOptions = new CompilerOptions(); |
- CmdLineParser cmdLineParser = new CmdLineParser(compilerOptions); |
- cmdLineParser.parseArgument(arguments); |
- final CollectingPhase phase = new CollectingPhase(); |
- CompilerConfiguration config = new DefaultCompilerConfiguration(compilerOptions) { |
- @Override |
- public List<DartCompilationPhase> getPhases() { |
- ArrayList<DartCompilationPhase> phases = new ArrayList<DartCompilationPhase>(); |
- phases.addAll(super.getPhases()); |
- phases.add(phase); |
- return phases; |
- } |
- }; |
- DartArtifactProvider provider = getArtifactProvider(config.getOutputDirectory()); |
- DartCompilerListener listener = getListener(); |
- List<String> sourceFiles = compilerOptions.getSourceFiles(); |
- if (sourceFiles.size() != 1) { |
- throw new IllegalArgumentException("incorrect number of source files " + sourceFiles); |
- } |
- File sourceFile = new File(sourceFiles.get(0)); |
- LibrarySource lib; |
- if (sourceFile.getName().endsWith(".dart")) { |
- lib = new DefaultLibrarySource(sourceFile, null); |
- } else { |
- lib = new UrlLibrarySource(sourceFile); |
- } |
- DartCompiler.compileLib(lib, config, provider, listener); |
- Deque<Double> scores = new ArrayDeque<Double>(10); |
- for (int i = 0; i < 10; i++) { |
- scores.addLast(0d); |
- } |
- long start = System.currentTimeMillis(); |
- int i = 0; |
- while (true) { |
- i++; |
- TypeAnalyzer typeAnalyzer = new TypeAnalyzer(); |
- for (DartUnit unit : phase.units) { |
- typeAnalyzer.exec(unit, phase.context, phase.typeProvider); |
- } |
- long elapsed = System.currentTimeMillis() - start; |
- if (elapsed > ROUND_DURATION_MS) { |
- double score = i * SCORE_SCALE / elapsed; |
- scores.removeFirst(); |
- scores.addLast(score); |
- printScores(scores); |
- start = System.currentTimeMillis(); |
- i = 0; |
- } |
- } |
- } |
- |
- private static void printScores(Deque<Double> scores) { |
- double xn = 1d; |
- for (double x : scores) { |
- xn *= x; |
- } |
- double geomean = Math.pow(xn, 1d / scores.size()); |
- xn = 0d; |
- for (double x : scores) { |
- double deviation = x - geomean; |
- xn += deviation * deviation; |
- } |
- double stddev = Math.sqrt(xn / (scores.size() - 1)); |
- System.out.println(String.format("geomean %.03f std. dev. %.03f", geomean, stddev)); |
- } |
- |
- private static DartArtifactProvider getArtifactProvider(File outputDirectory) { |
- final DartArtifactProvider provider = new DefaultDartArtifactProvider(outputDirectory); |
- return new DartArtifactProvider() { |
- ConcurrentHashMap<URI, CharArrayWriter> artifacts = |
- new ConcurrentHashMap<URI, CharArrayWriter>(); |
- |
- @Override |
- public boolean isOutOfDate(Source source, Source base, String extension) { |
- return true; |
- } |
- |
- @Override |
- public Writer getArtifactWriter(Source source, String part, String extension) { |
- URI uri = getArtifactUri(source, part, extension); |
- CharArrayWriter writer = new CharArrayWriter(); |
- CharArrayWriter existing = artifacts.putIfAbsent(uri, writer); |
- return (existing == null) ? writer : existing; |
- } |
- |
- |
- @Override |
- public URI getArtifactUri(Source source, String part, String extension) { |
- return provider.getArtifactUri(source, part, extension); |
- } |
- |
- @Override |
- public Reader getArtifactReader(Source source, String part, String extension) |
- throws IOException { |
- URI uri = getArtifactUri(source, part, extension); |
- CharArrayWriter writer = artifacts.get(uri); |
- if (writer != null) { |
- return new CharArrayReader(writer.toCharArray()); |
- } |
- return provider.getArtifactReader(source, part, extension); |
- } |
- }; |
- } |
- |
- private static DartCompilerListener getListener() { |
- return DartCompilerListener.EMPTY; |
- } |
- |
- static class CollectingPhase implements DartCompilationPhase { |
- List<DartUnit> units = new ArrayList<DartUnit>(); |
- DartCompilerContext context; |
- CoreTypeProvider typeProvider; |
- |
- @Override |
- public synchronized DartUnit exec(DartUnit unit, DartCompilerContext context, |
- CoreTypeProvider typeProvider) { |
- units.add(unit); |
- this.context = context; |
- this.typeProvider = typeProvider; |
- return unit; |
- } |
- } |
-} |