转载

ognl性能测试

编译后 1000000次 ===>4091毫秒 100000次 ===>1255毫秒

不编译 1000000次 ===>27091毫秒 100000次 ===>3997毫秒

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

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>

正文到此结束
Loading...