repeated calls to resove EL variable suffer from a performance hit due to uncached unresolvable classes
The code above leads to 3 caught ClassNotFoundExceptions in org.zkoss.zel.ImportHandler#findClass(String name)
The attached test scenario TestImportHandlerPerformance.java highlighting the difference between a cache hit and a cache miss at larger volumes.
At 100000 repetitions, resolving java.lang.Object takes ~<1ms, while repeated failing to resolve a variable 'test' results in significant slowdown (~600ms)
This has been avoided in tomcat's EL implementation since 8.0.21
We should further evaluate if a later tomcat version (8.5 or 9 - all use EL 3.0 ) contains additional beneficial fixes and improvements to merge in to ZK's EL adaptation.