是否有任何优化器(免费或商业)支持编译时功能评估(CTFE,也就是编译时函数执行),在编译时知道参数并且它没有副作用?
简单示例:
public class Main {
public static void main(String[] args) {
HtmlDiv div = new HtmlDiv("test");
System.out.println(div);
}
}
class HtmlDiv {
public final String text;
public HtmlDiv(String text) {
this.text = text;
}
public String toString() {
return "<div>" + text /* in real life, escape would be used */ + "</div>";
}
}
这可以优化为:
public class Main {
public static void main(String[] args) {
System.out.println("<div>test</div>");
}
}
我问的主要原因,从示例中可以看出,对我的servlet使用静态类型会很好(可能有更好的语法,例如jvm的ceylong语言),但是一个println()和分别计算每个html元素的文本。但是,肯定有更多的例子可供它们使用。
我尝试过ProGuard,但没有优化。我google了,但没有找到任何支持它的优化器。我也试过阅读http://proguard.sourceforge.net/alternatives.html的链接,但没有一个优化器在他们的网站编译时功能评估中提到,只有其他优化,例如死代码消除。