Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import groovy.lang.GroovyClassLoader;
- import groovy.lang.GroovyCodeSource;
- import org.codehaus.groovy.control.CompilerConfiguration;
- import org.codehaus.groovy.control.customizers.ImportCustomizer;
- import java.util.Date;
- public class TestCompileTime {
- public void addImportCustomizers(CompilerConfiguration cc) {
- ImportCustomizer ic = new ImportCustomizer();
- ic.addImport("Date", "java.util.Date");
- ic.addImport("Collection", "java.util.Collection");
- ic.addImport("Deque", "java.util.Deque");
- ic.addImport("Enumeration", "java.util.Enumeration");
- ic.addImport("Formattable", "java.util.Formattable");
- ic.addImport("AbstractCollection", "java.util.AbstractCollection");
- ic.addImport("Arrays", "java.util.Arrays");
- ic.addImport("BitSet", "java.util.BitSet");
- ic.addImport("Calendar", "java.util.Calendar");
- ic.addImport("ZCalendar", "java.util.Calendar");
- ic.addImport("GregorianCalendar", "java.util.GregorianCalendar");
- ic.addImport("Currency", "java.util.Currency");
- ic.addImport("EventObject", "java.util.EventObject");
- ic.addImport("HashMap", "java.util.HashMap");
- ic.addImport("HashSet", "java.util.HashSet");
- ic.addImport("ListResourceBundle", "java.util.ListResourceBundle");
- ic.addImport("Locale", "java.util.Locale");
- ic.addImport("Properties", "java.util.Properties");
- ic.addImport("Random", "java.util.Random");
- ic.addImport("Timer", "java.util.Timer");
- ic.addImport("TimerTask", "java.util.TimerTask");
- ic.addImport("TreeMap", "java.util.TreeMap");
- ic.addImport("Annotation", "java.text.Annotation");
- ic.addImport("BreakIterator", "java.text.BreakIterator");
- ic.addImport("CollationElementIterator", "java.text.CollationElementIterator");
- ic.addImport("ParsePosition", "java.text.ParsePosition");
- ic.addImport("StringCharacterIterator", "java.text.StringCharacterIterator");
- ic.addImport("MessageFormat", "java.text.MessageFormat");
- ic.addImport("DecimalFormat", "java.text.DecimalFormat");
- ic.addImport("DateFormat", "java.text.DateFormat");
- ic.addImport("Clob", "java.sql.Clob");
- ic.addImport("SQLPermission", "java.sql.SQLPermission");
- ic.addImport("DriverManager", "java.sql.DriverManager");
- ic.addImport("ByteBuffer", "java.nio.ByteBuffer");
- ic.addImport("ShortBuffer", "java.nio.ShortBuffer");
- cc.addCompilationCustomizers(ic);
- }
- public void testImportsTime(boolean runSlow) {
- // Create a master classloader with some import customizers
- CompilerConfiguration masterCc = new CompilerConfiguration();
- masterCc.setRecompileGroovySource(true);
- addImportCustomizers(masterCc);
- GroovyClassLoader masterClassLoader = new GroovyClassLoader(this.getClass().getClassLoader(), masterCc);
- System.out.println("Showing " + (runSlow ? "slow" : "fast") + " parse time");
- int maxIterations = 10;
- // The import customizer uses "ZCalendar" as an alias for Calendar so we can make sure the
- // import customizer is actually doing something.
- String script = "ZCalendar c = new GregorianCalendar()";
- for (int iteration = 0; iteration < maxIterations; iteration++)
- {
- GroovyCodeSource gcs = new GroovyCodeSource(script,
- "myscript" + iteration,
- "/my/code/base" + iteration);
- gcs.setCachable(false);
- CompilerConfiguration thisCc;
- if (runSlow) // this is what causes it to slow down
- {
- thisCc = new CompilerConfiguration();
- addImportCustomizers(thisCc);
- thisCc.setRecompileGroovySource(true);
- }
- else
- {
- thisCc = masterCc;
- }
- GroovyClassLoader loader = new GroovyClassLoader(masterClassLoader, thisCc);
- Date startTime = new Date();
- loader.parseClass(gcs, false);
- Date endTime = new Date();
- System.out.println("Parse time: " + (endTime.getTime() - startTime.getTime()) + " ms");
- }
- }
- }
- new TestCompileTime().testImportsTime(true)
- new TestCompileTime().testImportsTime(false)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement