ognl性能测试

[size=medium]编译后 1000000次 ===>4091毫秒 100000次 ===>1255毫秒
不编译 1000000次 ===>27091毫秒 100000次 ===>3997毫秒

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

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



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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值