BES v 6.5 和WebLogic v 8.1 SP6 作了对比测试

本文对比测试了BES 6.5和WebLogic 8.1 SP6在Session Bean、Session Bean with JDBC以及Session Bean with CMP模式下的性能。结果显示,WebLogic在JDBC和CMP模式下表现优于BES,JDBC模式BES比WebLogic慢12%,CMP模式慢35%。CMP模式在WebLogic中比JDBC慢19%,而在BES中慢40%。对于高频业务,JDBC可能是更好的选择。

  近日就BES  v 6.5 和WebLogic  v 8.1 SP6 作了对比测试

  1. Session Bean 比较

 

    Session Bean业务方法如下:

    public double  getCircArea(double r) {

        return r*r*3.1415926;

    }

 

    public Vector  getRandVector(int a) {

        Vector v=new Vector();

        for(int i=0;i<a;i++){

            v.add(new Double(java.lang.Math.random()));

        }

        return v;

    }

 

    客户端调用方法如下:

    double d=client.getCircArea(1000*java.lang.Math.random());

    Vector v= client.getRandVector(1000);

   

    联系测试3次测试结果如下:

   

    WebLogic 8.1 With JRockit

9.925

11.17

11.17

平均值

78

63

63

最大值

0

0

0

最小值

10.7666

22.6813

22.6813

标准方差

     WebLogic 8.1 With Sun JDK

12.185

11.875

10.94

平均值

47

63

31

最大值

0

0

0

最小值

10.4035

10.0611

9.26366

标准方差

      BES v6.5

32.585

30.245

30.39

平均值

250

156

140

最大值

15

15

15

最小值

49.2021

26.3249

25.7978

标准方差

 

  2. Session BeanWith JDBC 比较

   Session Bean中通过JDBC调用下列存储过程

  FUNCTION charge(pID IN NUMBER, pValue IN NUMBER,pValueOut out Number ) RETURN Integer IS
  BEGIN
 
    UPDATE tdemo_stock
       SET stock = stock - pValue
     WHERE tdemo_stock.id = pID RETURNING stock INTO pValueOut;
 
      INSERT INTO tdemo_charge
        (id, VALUE)
      VALUES
        (seq_stock.NEXTVAL, pValue);
   
      COMMIT;
   
    RETURN
0;
  END;

 

    public int charge(int value) {

        int nRlt = 0;

        int nValue = 0;

        Connection cnn = null;

        CallableStatement call = null;

        try {

            cnn = DBConnectionFactory.getConnection();

            call = cnn.prepareCall(

                    "{? = call DEMO_STOCK.charge(?,?,?)}");

            call.registerOutParameter(1, Types.INTEGER);

            call.registerOutParameter(4, Types.NUMERIC);

            call.setLong(2, 571);

            call.setLong(3, value);

            call.execute();

            nRlt = call.getInt(1);

            nValue = call.getInt(4);

            System.out.print("nRlt=" + nRlt);

            System.out.println("nValue=" + nValue);

        } catch (Exception ex) {

            ex.printStackTrace();

        } finally {

            try {

                if (call !=null)

                    call.close();

                if (cnn !=null)

                    cnn.close();

            } catch (SQLException ex1) {

            }

            return nValue;

        }

    }

    联系测试3次测试结果如下:

注:由于首次时间耗时比例大,故去处了首次

    WebLogic 8.1 With JRockit

16.2513

15.9397

15.9447

平均值

32

31

32

最大值

0

0

0

最小值

9.45437

6.32846

8.58786

标准方差

    BES v6.5

18.8392

17.9799

17.8945

平均值

78

47

78

最大值

0

0

0

最小值

11.1485

9.25296

10.5468

标准方差

  3. Session BeanWith CMP 比较

     Session Bean中通过CMP方式访问数据库

    public int  charge_cmp(int value) {

        long nValue=0;

        try {

            TdemoStock stock = stockHome.findByPrimaryKey(new Integer(571));

            stock.setStock(stock.getStock()-value);

            nValue=stock.getStock();

            TdemoCharge charge=chargeHome.create(value);

            System.out.println("nValue=" + nValue);

        }

        catch (FinderException ex ){

            System.out.println("FinderException ");

        }

        catch (CreateException ex){

            if (sessionContext.getRollbackOnly()==false)

                this.sessionContext.setRollbackOnly();

            System.out.println("CreateException call setRollbackOnly()");

            ex.printStackTrace();

        }

        catch (Exception ex) {

            ex.printStackTrace();

        }

        return 0;

    }

    WebLogic 8.1 With JRockit

19.9497

19.7839

19.8643

平均值

78

78

78

最大值

0

0

0

最小值

9.9338

10.6559

10.3483

标准方差

    BES_v65

30.5477

31.0151

31.0101

平均值

719

672

703

最大值

0

15

15

最小值

70.8858

66.5061

69.3822

标准方差

 

 4. 综合比较

 

 

type

 

CMP消耗增加%

 

 

JDBC

CMP

 

vendor

WLS

16.04523

19.866

19.23271501

 

BES

18.23786

30.85762

40.89675388

BES相对WLS耗时%

12.02241

35.62045

 

 

 5.结论

  综合评价下列WLS的性能相对BES要好一些,从数据中可以看出。BES相对WLS:JDBC模式耗时要多12%,CMP模式要多35%

另外就CMP模式和JDBC模式的对比情况来看。

WLS容器中 CMP要多耗时19%,在BES容器中CMP要多耗时40%

期待对EJB3中的JPA进行测试,看看JPA相对JDBC能够多耗时多少

所以如果业务非常频繁,用JDBC比较合适

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值