package org.mvel2.tests.perftests; import org.mvel2.MVEL; import org.mvel2.compiler.ExecutableAccessor; import org.mvel2.util.FastList; import java.util.List; public class InlineCollectionsPerformance { private static final int COUNT = 200000; public static void main(String[] args) { long time; for (int i = 0; i < 5; i++) { // time = System.currentTimeMillis(); // testJavaList(); // System.out.println("Java : " + (System.currentTimeMillis() - time)); // time = System.currentTimeMillis(); testOGNLList(); System.out.println("OGNL2.7 : " + (System.currentTimeMillis() - time)); time = System.currentTimeMillis(); testMVELList(); System.out.println("MVEL : " + (System.currentTimeMillis() - time)); System.out.println(); } } // public static void testMVELList() { // // ExecutableAccessor s = (ExecutableAccessor) MVEL.compileExpression("['Foo244':'Bar','Foo244':'Bar','Foo244':'Bar','Foo244':'Bar','Foo244':'Bar']"); // Map list; // s.getNode().getReducedValueAccelerated(null, null, null); // for (int i = 0; i < COUNT; i++) { // list = (Map) s.getNode().getAccessor().getValue(null, null, null); // // } // } // public static void testMVELList() { // // ExecutableAccessor s = (ExecutableAccessor) MVEL.compileExpression("{'Foo244','Bar','Foo244','Bar','Foo244','Bar','Foo244','Bar','Foo244','Bar'}"); // Object[] list; // s.getNode().getReducedValueAccelerated(null, null, null); // for (int i = 0; i < COUNT; i++) { // list = (Object[]) s.getNode().getAccessor().getValue(null, null, null); // // // assert "Foo244".equals(list.get(0)) && "Foo244".equals(list.get(2)) && list.size() == 10; // } // } public static void testMVELList() { ExecutableAccessor s = (ExecutableAccessor) MVEL.compileExpression("['Foo244','Bar','Foo244','Bar','Foo244','Bar','Foo244','Bar','Foo244','Bar']"); List list; s.getNode().getReducedValueAccelerated(null, null, null); for (int i = 0; i < COUNT; i++) { list = (List) s.getNode().getAccessor().getValue(null, null, null); assert "Foo244".equals(list.get(0)) && "Foo244".equals(list.get(2)) && list.size() == 10; } } public static void testOGNLList() { // OgnlContext context = (OgnlContext) Ognl.createDefaultContext(null); // Node node; // try { // node = Ognl.compileExpression(context, null, "{'Foo244','Bar','Foo244','Bar','Foo244','Bar','Foo244','Bar','Foo244','Bar'}"); // } // catch (Exception e) { // throw new RuntimeException(e); // } // // List list; // for (int i = 0; i < COUNT; i++) { // list = (List) node.getAccessor().get(null, null); // // assert "Foo244".equals(list.get(0)) && "Foo244".equals(list.get(2)) && list.size() == 10; // } } public static void testJavaList() { FastList list; for (int i = 0; i < COUNT; i++) { list = new FastList(10); list.add("Foo244"); list.add("Bar"); list.add("Foo244"); list.add("Bar"); list.add("Foo244"); list.add("Bar"); list.add("Foo244"); list.add("Bar"); list.add("Foo244"); list.add("Bar"); assert "Foo244".equals(list.get(0)) && "Bar".equals(list.get(1)) && list.size() == 10; } } }