Advertisement
goomail59

Untitled

Nov 20th, 2015
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 4.35 KB | None | 0 0
  1. import groovy.lang.GroovyClassLoader;
  2. import groovy.lang.GroovyCodeSource;
  3. import org.codehaus.groovy.control.CompilerConfiguration;
  4. import org.codehaus.groovy.control.customizers.ImportCustomizer;
  5. import java.util.Date;
  6.  
  7. public class TestCompileTime {
  8.     public void addImportCustomizers(CompilerConfiguration cc) {
  9.         ImportCustomizer ic = new ImportCustomizer();
  10.         ic.addImport("Date", "java.util.Date");
  11.         ic.addImport("Collection", "java.util.Collection");
  12.         ic.addImport("Deque", "java.util.Deque");
  13.         ic.addImport("Enumeration", "java.util.Enumeration");
  14.         ic.addImport("Formattable", "java.util.Formattable");
  15.         ic.addImport("AbstractCollection", "java.util.AbstractCollection");
  16.         ic.addImport("Arrays", "java.util.Arrays");
  17.         ic.addImport("BitSet", "java.util.BitSet");
  18.         ic.addImport("Calendar", "java.util.Calendar");
  19.         ic.addImport("ZCalendar", "java.util.Calendar");
  20.         ic.addImport("GregorianCalendar", "java.util.GregorianCalendar");
  21.         ic.addImport("Currency", "java.util.Currency");
  22.         ic.addImport("EventObject", "java.util.EventObject");
  23.         ic.addImport("HashMap", "java.util.HashMap");
  24.         ic.addImport("HashSet", "java.util.HashSet");
  25.         ic.addImport("ListResourceBundle", "java.util.ListResourceBundle");
  26.         ic.addImport("Locale", "java.util.Locale");
  27.         ic.addImport("Properties", "java.util.Properties");
  28.         ic.addImport("Random", "java.util.Random");
  29.         ic.addImport("Timer", "java.util.Timer");
  30.         ic.addImport("TimerTask", "java.util.TimerTask");
  31.         ic.addImport("TreeMap", "java.util.TreeMap");
  32.         ic.addImport("Annotation", "java.text.Annotation");
  33.         ic.addImport("BreakIterator", "java.text.BreakIterator");
  34.         ic.addImport("CollationElementIterator", "java.text.CollationElementIterator");
  35.         ic.addImport("ParsePosition", "java.text.ParsePosition");
  36.         ic.addImport("StringCharacterIterator", "java.text.StringCharacterIterator");
  37.         ic.addImport("MessageFormat", "java.text.MessageFormat");
  38.         ic.addImport("DecimalFormat", "java.text.DecimalFormat");
  39.         ic.addImport("DateFormat", "java.text.DateFormat");
  40.         ic.addImport("Clob", "java.sql.Clob");
  41.         ic.addImport("SQLPermission", "java.sql.SQLPermission");
  42.         ic.addImport("DriverManager", "java.sql.DriverManager");
  43.         ic.addImport("ByteBuffer", "java.nio.ByteBuffer");
  44.         ic.addImport("ShortBuffer", "java.nio.ShortBuffer");
  45.         cc.addCompilationCustomizers(ic);
  46.     }
  47.  
  48.     public void testImportsTime(boolean runSlow) {
  49.         // Create a master classloader with some import customizers
  50.  
  51.         CompilerConfiguration masterCc = new CompilerConfiguration();
  52.         masterCc.setRecompileGroovySource(true);
  53.         addImportCustomizers(masterCc);
  54.         GroovyClassLoader masterClassLoader = new GroovyClassLoader(this.getClass().getClassLoader(), masterCc);
  55.  
  56.         System.out.println("Showing " + (runSlow ? "slow" : "fast") + " parse time");
  57.  
  58.         int maxIterations = 10;
  59.  
  60.         // The import customizer uses "ZCalendar" as an alias for Calendar so we can make sure the
  61.         // import customizer is actually doing something.
  62.         String script = "ZCalendar c = new GregorianCalendar()";
  63.  
  64.         for (int iteration = 0; iteration < maxIterations; iteration++)
  65.         {
  66.             GroovyCodeSource gcs = new GroovyCodeSource(script,
  67.                     "myscript" + iteration,
  68.                     "/my/code/base" + iteration);
  69.             gcs.setCachable(false);
  70.  
  71.             CompilerConfiguration thisCc;
  72.  
  73.             if (runSlow) // this is what causes it to slow down
  74.             {
  75.                 thisCc = new CompilerConfiguration();
  76.                 addImportCustomizers(thisCc);
  77.                 thisCc.setRecompileGroovySource(true);
  78.             }
  79.             else
  80.             {
  81.                 thisCc = masterCc;
  82.             }
  83.  
  84.             GroovyClassLoader loader = new GroovyClassLoader(masterClassLoader, thisCc);
  85.  
  86.             Date startTime = new Date();
  87.             loader.parseClass(gcs, false);
  88.             Date endTime = new Date();
  89.  
  90.             System.out.println("Parse time: " + (endTime.getTime() - startTime.getTime()) + " ms");
  91.         }
  92.     }
  93. }
  94.  
  95. new TestCompileTime().testImportsTime(true)
  96. new TestCompileTime().testImportsTime(false)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement