在讨论模板引擎的性能之前必须先明确几个问题:
1. 在同等优化条件下,java原生代码最快。
2. jsp在只采用java脚本编写的情况下,可以认为与java原生代码的性能相当,仍然是在同等优化条件下。
3. 编译性能可以不考虑,因为都是编译一次,多次运行,对运行期没有影响。
有些模板引擎的性能优于jsp,这个只是由于对比的jsp容器做的优化较少,而模板引擎做了大量优化。
例如tomcat的jsper引擎,优化做的比较少,在模板引擎中很常见的优化手段在jsper中都没有做,所以一些模板引擎的性能超越tomcat的jsp引擎并不奇怪。
如果采用同等的优化条件,无论是什么模板引擎,性能最多能与只采用java脚本的jsp性能相当,不可能超越。除非这个模板引擎生成的字节码比jdk自带的编译器生成的字节码效率高。
jsp技术的几个常规优化点:
1. 把字符串常量定义为静态char数组,这个优化效果是很明显的。以下示例代码是jsp引擎编译之后的java代码,例如:
out.write("Hello World !");
优化成:
out.write(_jsp_string_1, 0, _jsp_string_1.length);
private static final String _jsp_string_1 = "Hello World !".toCharArray();
这样做的好处:1,节省内存,减少内存碎片,减轻gc压力;2,减少内存申请;3,减少方法
1. 在同等优化条件下,java原生代码最快。
2. jsp在只采用java脚本编写的情况下,可以认为与java原生代码的性能相当,仍然是在同等优化条件下。
3. 编译性能可以不考虑,因为都是编译一次,多次运行,对运行期没有影响。
有些模板引擎的性能优于jsp,这个只是由于对比的jsp容器做的优化较少,而模板引擎做了大量优化。
例如tomcat的jsper引擎,优化做的比较少,在模板引擎中很常见的优化手段在jsper中都没有做,所以一些模板引擎的性能超越tomcat的jsp引擎并不奇怪。
如果采用同等的优化条件,无论是什么模板引擎,性能最多能与只采用java脚本的jsp性能相当,不可能超越。除非这个模板引擎生成的字节码比jdk自带的编译器生成的字节码效率高。
jsp技术的几个常规优化点:
1. 把字符串常量定义为静态char数组,这个优化效果是很明显的。以下示例代码是jsp引擎编译之后的java代码,例如:
out.write("Hello World !");
优化成:
out.write(_jsp_string_1, 0, _jsp_string_1.length);
private static final String _jsp_string_1 = "Hello World !".toCharArray();
这样做的好处:1,节省内存,减少内存碎片,减轻gc压力;2,减少内存申请;3,减少方法