应用性能优化

    这几天,由于工作的原因对以前开发的系统进行了测试。这个系统主要作用就是传输数据,将一个数据库的数据搬到另外一个数据库中,期间可能需要通过Internet,而目标的接收者也不一定再线的这么一个咚咚。

    测试了两种数据库,分别对其进行数据转入转出处理。常被人说你写的程序效率低,不可用。其实不然,这次测试发现原来配置非常重要:

    1) 编码

    由于程序使用Java写的,又要兼容各个不同的数据库,因而需要对字符串型的数据进行编码转换。

    String str = new String(rs.getString(i).getByte(databaseEncoding));

    当数据量小的时候,察觉不出来,当数据量大时就发现这个消耗有些惊人。

    if(databaseEncoding.equals(fileEncoding)){

        return new String(rs.getString(i).getByte(databaseEncoding));

    }

    经过更改后,当fileEncoding和databaseEncoding时,数据处理效率提高5倍以上。

    2)硬盘

    在做测试时,当数据库与应用在同一台机器上时,发现硬盘灯从来就没有熄灭过。移开应用程序到另外一台机,重现测试,发现性能至少提高50%。这和我以前的经验相反。经过分析发现,原来我使用的是笔记本,硬盘只有4200rpm。当数据量大时,硬盘根本应付不过来。分开应用后,JDBC写入数据的网络通信开销要小于硬盘资源争夺的开销,速度当然提上去了。

    看来不同环境下同一应用,做测试结论不一定都相同。

    3)综合损耗

    做测试时,发现系统最优性能既不是数据较小时,也不是数据最大时,而是在一个中间值。分析发现,程序运行有一些“综合损耗”,这些综合损耗不论你数据大或小都客观存在,如取数据连接、格式校验等。当数据量小时,这些损耗占的时间比重就多,而当数据量大时,虽然这些综合损耗占的比重少,但是数据量大占的“动态损耗就多了”。只有在中间某一个值时,两种损耗都不是特别显现时,系统运行的效率达到了最高值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值