`

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
分享到:
评论

相关推荐

    达内java培训目录

    JavaSE核心 异常处理、多线程基础、IO系统、网络编程、Java反射机制、JVM性能调优(JVM内存结构剖析、GC分析及调优、JVM内存参数优化)、Java泛型、JDK新特性 熟练掌握JavaSE核心内容,特别是IO和多线程;...

    web开发常用jar

    CGLIB是一个强大的高质量高性能的代码生成库,在运行时可以用它来扩展Java类 jfreechart-1.0.12.jar 使用java生成图表的工具 log4j-1.2.15.jar 通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、...

    java开发常用jar包

    CGLIB是一个强大的高质量高性能的代码生成库,在运行时可以用它来扩展Java类 jfreechart-1.0.12.jar 使用java生成图表的工具 log4j-1.2.15.jar 通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、...

    深入浅出Struts2(附源码)

    3.9 对动作类进行测试 51 3.10 小结 51 第4章 OGNL 52 4.1 Value Stack栈 52 4.2 读取Object Stack里的对象的属性 53 4.3 读取Context Map里的对象的属性 54 4.4 如何调用字段和方法 55 4.5 如何访问数组类型...

    低清版 大型门户网站是这样炼成的.pdf

    2.1.7 功能强大的表达式语言ognl 47 2.1.8 struts 2的运行流程分析—helloworld 48 2.1.9 struts 2的异常处理 52 2.2 struts 2配置精要 54 2.2.1 web.xml中struts 2的配置实现 54 2.2.2 struts 2属性配置文件...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    3.9 对动作类进行测试 51 3.10 小结 51 第4章 OGNL 52 4.1 Value Stack栈 52 4.2 读取Object Stack里的对象的属性 53 4.3 读取Context Map里的对象的属性 54 4.4 如何调用字段和方法 55 4.5 如何访问数组类型的属性...

    springmybatis

    性能也比hibernate好。而且也比较轻量级,因为当时在项目中,没来的及做很很多笔记。后来项目结束了,我也没写总结文档。已经过去好久了。但最近突然又对这个ORM 工具感兴趣。因为接下来自己的项目中很有可能采用这...

Global site tag (gtag.js) - Google Analytics