`

ognl性能测试

 
阅读更多
编译后 1000000次 ===>4091毫秒 100000次 ===>1255毫秒
不编译 1000000次 ===>27091毫秒 100000次 ===>3997毫秒

性能不是很好 mvel和rinho是它的2-3倍

ongl使用静态方法的形式不太好:@java.lang.Math@min(3,5),这个样子,有点蛋疼啊



package com.eyu.ahxy.module.expression.ognl;

import ognl.Node;
import ognl.Ognl;
import ognl.OgnlContext;

import org.junit.Test;

/**
 * 编译后 1000000次 ===>4091毫秒 100000次 ===>1255毫秒 
 * 不编译 1000000次 ===>27091毫秒 100000次 ===>3997毫秒
 * @author bean
 */
public class OgnlTest {

	String exp = "@java.lang.Math@min(@java.lang.Math@floor(test.a*test.getB()),@java.lang.Math@floor(c+d*e))";

	public static final int NUM = 1000000;

	public int getA() {
		return 10;
	}

	public int getB() {
		return 10;
	}

	@Test
	public void compileTest() throws Exception {
		OgnlContext context = new OgnlContext();
		context.put("test", new OgnlTest());
		context.put("c", 10);
		context.put("d", 10);
		context.put("e", 2);
		OgnlContext context2 = new OgnlContext();
		context2.setRoot(context);
		Node node = Ognl.compileExpression(context2, context2.getRoot(), exp);
		for (int i = 0; i < NUM; i++) {
			Object result = node.getAccessor().get(context2, context2.getRoot());
			// System.err.println("=========" + result);
		}
	}

}





使用的ognl的版本是 3.0.8
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>3.0.8</version>
</dependency>
0
1
分享到:
评论

相关推荐

    struts2-OGNL表达式测试

    Struts2是一个流行的Java Web应用程序框架,它极大地简化了MVC(模型-视图-控制器)架构的实现。...在学习过程中,记得关注OGNL表达式的语法、安全问题(如防止OGNL注入攻击)以及性能优化等方面的知识。

    ognl源码.rar

    3. **测试框架**:一些测试框架如Spock使用OGNL来设置和验证对象的状态。 4. **脚本语言**:作为嵌入式脚本语言,OGNL可以在Java应用中实现动态逻辑。 ### 学习与进阶 理解OGNL的源码有助于深入掌握其工作原理,...

    ognl2.7.3源代码

    3. **测试用例**:源代码通常包含测试用例,这些用例展示了OGNL的各种用法,是理解和学习的好材料。 **四、进阶应用** 1. **自定义函数和类型转换器**:源代码会展示如何注册自定义的函数和类型转换器,扩展OGNL的...

    ognl jar包源码

    - 编写和测试OGNL表达式,观察其行为。 - 实现自定义的访问器或扩展OGNL的功能。 - 参考Apache Struts2的文档,了解其在实际项目中的应用。 总的来说,研究ognl.jar的源码对于任何想要深入了解Struts2框架以及Java...

    ognl项目文件和源代码

    - 在Eclipse中导入项目,查看和运行测试用例,理解OGNL如何工作。 - 阅读源代码,了解OGNL的实现细节。 - 结合OGNL的官方文档和其他在线教程,深化对OGNL表达式的理解和使用。 通过这个项目,开发者不仅可以学习到...

    ognl 源码zip

    9. **优化与性能**:研究OGNL在性能优化方面的策略,比如缓存编译后的表达式以提高效率。 10. **应用实践**:结合实际项目,尝试使用OGNL解决数据绑定、动态计算等问题,进一步巩固理论知识。 通过对OGNL源码的...

    ognl-2.6.11的源代码

    源代码包通常会包含单元测试和示例代码,这些可以帮助理解OGNL如何工作,并提供使用示例。 学习和分析OGNL的源代码有助于深入理解其内部工作机制,提高开发效率,同时也能帮助开发者更好地利用这一强大的工具来...

    st2 webconsole.html页面ognl调试1

    通过这种方式,开发者可以在浏览器中测试和调试OGNL表达式,查看结果,这对于理解应用程序内部状态、查找问题和优化性能非常有帮助。例如,你可以尝试访问对象的属性、调用方法、执行逻辑判断等。此外,通过历史记录...

    Struts2 & OGNL

    开发过程中,有一些工具可以帮助我们调试和优化OGNL表达式,如Struts2的开发工具插件和在线OGNL表达式测试工具。这些工具可以即时验证表达式的正确性,提高开发效率。 **安全注意事项** 虽然OGNL功能强大,但如果不...

    ognl new

    在描述中提到的“good software”,可以理解为对OGNL这一工具或新版本的评价,意味着它的性能、易用性或者功能有所提升,是一款优秀的软件。在IT领域,软件的好坏通常基于其稳定性、效率、可维护性、用户友好性和...

    OGNL笔记

    开发过程中,有一些工具可以帮助我们更好地使用OGNL,例如表达式测试工具,可以在不涉及整个项目环境的情况下测试OGNL表达式的正确性。还有一些IDE插件提供语法高亮和自动完成,提升开发效率。 总的来说,OGNL是...

    Java SpEL、Ognl、MVEL2表达式Hook并记录小项目.zip

    4. 测试与优化:编写测试用例,确保Hook功能正常工作,并根据性能需求进行优化。 通过这个小项目,开发者能够深入理解这些表达式语言的工作原理,同时掌握如何在实际项目中实现监控和日志记录,从而提升代码的可...

    sqlmapproject-sqlmap-1.4.7-4-g67f918f.zip防SQL注入工具

    【标签】"LoadRunner11性能测试"涉及到的是HP LoadRunner 11,这是一个强大的负载和性能测试工具。LoadRunner允许用户模拟大量并发用户,以测试应用程序在高负载下的性能和稳定性。通过使用此工具,开发团队可以预见...

    struts2测试工具

    同时,考虑到Struts2的安全性问题,如著名的Struts2 OGNL注入漏洞,测试工具也可能包含安全相关的检查。 总的来说,Struts2测试工具对于开发者来说是提高开发效率和保障应用质量的重要辅助手段。无论这个"鬼哥...

    mvc框架性比较

    测试结果显示,即使通过Spring管理Struts 2的Action并设定为单例模式,性能提升并不显著,说明Action的实例化模式并非性能瓶颈的主要原因。 Spring MVC 3的性能与Struts 1相当,属于同一级别,这对于开发者而言是个...

    struts2测试案例

    Struts2是一个强大的Java web应用程序框架,用于构建和部署可维护、高性能的MVC(Model-View-Controller)架构的应用程序。它建立在Apache Jakarta的.struts1之上,并吸取了其他框架的优点,如WebWork,提供了更丰富...

    struts2.0的特点

    Struts2.0是Java Web开发领域中的一款流行框架,它是Struts1.x与WebWork框架的结合体,继承了两者的优点并进行了...开发者可以利用这些特性快速构建出功能完善、性能优异的Web应用,同时保持代码的可读性和可维护性。

    开发要用的rep第三弹

    它能够自动下载项目所需的库,解决依赖冲突,并且提供了编译、测试、打包、部署等一系列的生命周期阶段。Maven的使用极大地简化了项目的构建过程,使得团队协作更加高效。 2. OGNL(Object-Graph Navigation ...

    maven-3.2.1

    在这个版本中,Maven 继续优化了性能和用户体验。 ### Maven 的核心概念 1. **项目对象模型(Project Object Model, POM)**:POM是Maven项目的配置文件,通常以`pom.xml`的形式存在。它包含了项目的元数据,如...

    Struts2环境配置与基本操作演示

    Struts2是一个强大的Java Web框架,它为构建MVC(模型-视图-控制器)架构的应用程序提供了全面的支持。...在实际开发中,你还可以探索更高级的主题,如拦截器、结果类型、动态方法调用等,以提升应用的功能和性能。

Global site tag (gtag.js) - Google Analytics