Groovy--使用模板引擎和GroovyShell执行插值字符串

package curveJudge

import groovy.text.SimpleTemplateEngine


/**
 * Created by Jxy on 2019/8/26 17:16
 *
 */
class EngineTest {
     static void main(String[] args) {
         def shell = new GroovyShell()
         def engine = new SimpleTemplateEngine()
         def map = [
             'eg1' : 1,
             'eg2' : 1,
             'eg3' : 1,
             'eg5' : 1,
             'eg6' : 1,
             'eg7' : 1,
             'eg8' : 1,
             'eg9' : 1,
             'eg10': 1,
             'eg11': 1,
             'eg12': 1,
             'eg14': 1,
             'eg13': 1,
             'eg15': 1,
             'eg16': 1,
             'eg17': 1,
             'eg18': 1,
             'eg19': 1,
             'eg20': 1,
             'eg21': 1,
             'eg22': 1,
             'eg23': 1,
             'eg24': 1,
             'eg25': 1,
             'eg26': 1,
             'eg27': 1,
             'eg28': 1,
             'eg29': 1,
             'eg30': 1,
             'eg31': 1,
             'eg32': 1,
             'eg33': 1,
             'eg34': 1,
             'eg35': 1,
             'eg36': 1,
             'eg37': 1,
             'eg38': 1,
             'eg39': 1,
             'eg40': 1,
             'eg41': 1,
             'eg42': 1,
             'eg43': 1,
             'eg44': 1,
             'eg45': 1,
         ]
         def a = System.currentTimeMillis()
         String str = '($eg1+$eg10)*6'
         def string1 = engine.createTemplate(str).make(map).toString()
         println "执行结果:${-> shell.evaluate(string1)}"
         def b = System.currentTimeMillis()
         println "---->执行 1 次需要毫秒数: ${b - a}"

         def str1
         for (int i in 1..10) {
             str1 = '($eg44+$eg3)*2'
             def string2 = engine.createTemplate(str1).make(map).toString()
             println "${i}执行结果:${-> shell.evaluate(string2)}"
         }
         def c = System.currentTimeMillis()
         println "执行 10 次需要毫秒数: ${c - b}"

         String str2 = '($eg1+$eg10)*6'
         def string3 = engine.createTemplate(str2).make(map).toString()
         println "执行结果:${-> shell.evaluate(string3)}"
         def d = System.currentTimeMillis()
         println "---->在执行 1 次需要毫秒数: ${d - c}"

         def str3
         for (int i in 1..100) {
             str3 = '($eg44+$eg3)*2'
             def string4 = engine.createTemplate(str3).make(map).toString()
             println "${i}执行结果:${-> shell.evaluate(string4)}"
         }
         def e = System.currentTimeMillis()
         println "执行 100 次需要毫秒数: ${e - d}"

     }
}