Groovy 3之Native Lambda

为了提升Groovy中Lambda的性能,通过静态编译模式提供的类型信息以及Java 7引入的invokedynamic指令为Groovy生成与Java相似的bytecode,暂且称之为”Native Lambda”。而除了性能方面的提升外,在设计和实现Native Lambda时还考虑了尽可能保留Closure既有特性,为此每个Native Lambda都会对应一个内部类实例,故性能方面会稍微有些影响,鱼与熊掌不可兼得。另外,由于Lambda无法引用自身,也无法引用外层Lambda实例,故Lambda相对Closure而言不太适合运用于DSL的实现中。如果追求极致性能,则建议在静态编译模式下尽量使用Lambda,这也可以算作一个提升性能的小技巧。