/* * Milyn - Copyright (C) 2006 - 2010 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License (version 2.1) as published by the Free Software * Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * See the GNU Lesser General Public License for more details: * http://www.gnu.org/licenses/lgpl.txt */ package org.milyn.javabean.factory; import org.junit.Test; import static org.junit.Assert.*; import org.milyn.container.ExecutionContext; import org.milyn.container.MockExecutionContext; import java.lang.reflect.InvocationTargetException; public class PerfTest { private static boolean DISABLED = true; private static final int PARSE_COUNT = 1000; private static final int INVOKE_COUNT = 1000000; @Test public void test_parse_basic() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InterruptedException { if(DISABLED) return; ExecutionContext executionContext = new MockExecutionContext(); loopParseBasic(10000, executionContext); Thread.sleep(1000); long start = System.currentTimeMillis(); loopParseBasic(PARSE_COUNT, executionContext); System.out.println("Basic Parser Time: " + (System.currentTimeMillis() - start)); } @Test public void test_invoke_static_basic() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InterruptedException { if(DISABLED) return; ExecutionContext executionContext = new MockExecutionContext(); BasicFactoryDefinitionParser parser = new BasicFactoryDefinitionParser(); Factory<?> factory = parser.parse("org.milyn.javabean.TestFactory#newArrayList"); loopInvoke(10000, factory, executionContext); Thread.sleep(1000); long start = System.currentTimeMillis(); loopInvoke(INVOKE_COUNT, factory, executionContext); System.out.println("Basic Invoke Static factory Time: " + (System.currentTimeMillis() - start)); } @Test public void test_invoke_instance_basic() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InterruptedException { if(DISABLED) return; ExecutionContext executionContext = new MockExecutionContext(); BasicFactoryDefinitionParser parser = new BasicFactoryDefinitionParser(); Factory<?> factory = parser.parse("org.milyn.javabean.TestFactory#newInstance.newLinkedList"); loopInvoke(10000, factory, executionContext); Thread.sleep(1000); long start = System.currentTimeMillis(); loopInvoke(INVOKE_COUNT, factory, executionContext); System.out.println("Basic Invoke instance factory Time: " + (System.currentTimeMillis() - start)); } @Test public void test_parse_MVEL() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InterruptedException { if(DISABLED) return; ExecutionContext executionContext = new MockExecutionContext(); loopParseMVEL(10000, executionContext); Thread.sleep(1000); long start = System.currentTimeMillis(); loopParseMVEL(PARSE_COUNT, executionContext); System.out.println("MVEL Parser Time: " + (System.currentTimeMillis() - start)); } @Test public void test_invoke_static_MVEL() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InterruptedException { if(DISABLED) return; ExecutionContext executionContext = new MockExecutionContext(); MVELFactoryDefinitionParser parser = new MVELFactoryDefinitionParser(); Factory<?> factory = parser.parse("org.milyn.javabean.TestFactory.newArrayList()"); loopInvoke(10000, factory, executionContext); Thread.sleep(1000); long start = System.currentTimeMillis(); loopInvoke(INVOKE_COUNT, factory, executionContext); System.out.println("MVEL Invoke static factory Time: " + (System.currentTimeMillis() - start)); } @Test public void test_invoke_instance_MVEL() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InterruptedException { if(DISABLED) return; ExecutionContext executionContext = new MockExecutionContext(); MVELFactoryDefinitionParser parser = new MVELFactoryDefinitionParser(); Factory<?> factory = parser.parse("org.milyn.javabean.TestFactory.newInstance().newLinkedList()"); loopInvoke(10000, factory, executionContext); Thread.sleep(1000); long start = System.currentTimeMillis(); loopInvoke(INVOKE_COUNT, factory, executionContext); System.out.println("MVEL Invoke instance factory Time: " + (System.currentTimeMillis() - start)); } private void loopParseBasic(int count, ExecutionContext executionContext) { for(int i = 0; i < count; i++) { BasicFactoryDefinitionParser parser = new BasicFactoryDefinitionParser(); parser.parse("org.milyn.javabean.TestFactory#newInstance.newLinkedList"); } } private void loopParseMVEL(int count, ExecutionContext executionContext) { for(int i = 0; i < count; i++) { MVELFactoryDefinitionParser parser = new MVELFactoryDefinitionParser(); parser.parse("org.milyn.javabean.TestFactory.newInstance().newLinkedList()"); } } private void loopInvoke(int count, Factory<?> factory, ExecutionContext executionContext) { for(int i = 0; i < count; i++) { factory.create(executionContext); } } }