Spring的获取Bean的性能测试。

xiaoxiao2026-04-25  6

package com.liuxt.bean;

import junit.framework.TestCase;import org.springframework.context.support.AbstractApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.util.StopWatch;

public class ComputerTest extends TestCase {  public static void main(String[] args) {    AbstractApplicationContext ctx = new ClassPathXmlApplicationContext(    new String[] { "bean/ComputerBean.xml" });  ComputerBean computer1=(ComputerBean)ctx.getBean("computer");  ComputerBean computer2=(ComputerBean)ctx.getBean("computer");  System.out.println("computer1===computer2:"+(computer1==computer2));    testGetBeanFromSpring(ctx);  testNewInstaniate();

  ctx.destroy(); }

 private static StopWatch testGetBeanFromSpring(AbstractApplicationContext ctx) {  StopWatch stopWatch=new StopWatch();  stopWatch.start();  ComputerBean computer=(ComputerBean)ctx.getBean("computer");  for(int i=0;i<100000;i++){   computer=(ComputerBean)ctx.getBean("computer");   computer.sum(i,i);  }  stopWatch.stop();  System.out.println("100000 gets took "+stopWatch.getTotalTimeMillis()+" ms");  return stopWatch; }

 private static void testNewInstaniate() {  ComputerBean computer3;  StopWatch stopWatch=new StopWatch();  stopWatch.start();    for(int i=0;i<100000;i++){   computer3=new ComputerBean();   computer3.sum(i,i);  }  stopWatch.stop();  System.out.println("100000 gets took "+stopWatch.getTotalTimeMillis()+" ms"); }

}

 

测试的前提条件:

 JDK:java version "1.6.0_13"

winxp  cpu:2.6Ghz

 

测试结果:

  computer1===computer2:false100000 gets took 907 ms100000 gets took 0 ms

 

不知道为什么差距这么大。

请大家帮忙解释一下啊。。。期待中。

 

转载请注明原文地址: https://www.6miu.com/read-5047972.html

最新回复(0)