I love Groovy. I also love the new streams functionality in JDK 8. But, I am 
weary of the performance implications of Groovy + Streams, because to use 
streams you must use Groovy closures. I see the code generated creates a new 
closure instance then uses castToType to cast the closure to the JDK8 
functionality interface. Does Groovy make this efficient, or is the proxy 
generation from this going to be excessive if running a lot of small stream 
operations?

I think an interesting feature of Groovy would be if it sees a closure cast 
implicitly or explicitly to a certain interface type, it could make the closure 
implement the interface. You'd still have the overhead of compile-time class 
generation versus lambdas, but at least you wouldn't have to create proxies, 
and maybe there is an improved chance of JIT inlining? Even if it was supported 
within a single statement, like "Function<String, String> x = {it.trim()}" or 
Stream.of("abc").map { it.trim() }, the closure with trim could implement 
Function. Of course for backwards compatibility the class could still extend 
Closure and still implement call methods, but also implement the method apply, 
which delegates to call.

Jason Winnebeck
Software Engineer III Contractor - IT Software Development | Windstream
600 Willowbrook Office Park, Rochester, NY 14450
jason.winneb...@windstream.com<mailto:jason.winneb...@windstream.com> | 
windstreambusiness.com
o: 585.794-4585

This email message and any attachments are for the sole use of the intended 
recipient(s). Any unauthorized review, use, disclosure or distribution is 
prohibited. If you are not the intended recipient, please contact the sender by 
reply email and destroy all copies of the original message and any attachments.

Reply via email to