newhappy的专栏

高级系统分析师,专注于对SOA,Ajax以及J2EE架构的研究,欢迎大家与我交流.Email:pleasechess@126.com

牛海彬ID:newhappy2008
476935次访问,排名97好友16人,关注者48
吉林大学软件工程硕士;一汽启明CPDM项目组软件工程师;
newhappy2008的文章
原创 186 篇
翻译 24 篇
转载 99 篇
评论 253 篇
newhappy的公告
非常感谢CSDN提供了这么好的一个平台,过去的一年为生活而忙忙碌碌,博客更新的不多,在新的一年里,我会勤快一点,多学一些技术,多交一些技术上的朋友.
最近评论
middle:作者的推理根本不通!作者所说的问题都是在测试中发现的,而且也都通过测试很好的解决了。这就是说,决不是根本的设计方向的错误。这些问题在设计阶段,除非是神,任何人在当时当地都无法完全预料到。如果在早期阶段就投入精力到性能中,只会得不偿失。

作者也没有了解过前人的经验之谈。Premature optimization is the source of all evil. Pr……
ComingtoExpert:好文章。

好的性能是通过良好的设计进行设计出来的,不好的性能,往往通过较好的测试分析手段可以发现其瓶颈来改善的。
ilikepomelo:http://www.bt170.cn BT下载
zhangmeng13:请问 我想用路径调图片 怎么写代码 谢谢
huangk:还是比较模糊,能否举例说明?
文章分类
收藏
    相册
    友情连接
    114社区
    SOA-中间件
    张孝祥(RSS)
    杨洪波(RSS)
    沈东良
    许式伟(RSS)
    谭振林(RSS)
    银狐999(RSS)
    阿蒙专栏(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 软件设计是决定软件性能的关键 收藏

    新一篇: 用 JOTM 向Servlet中添加事务 | 旧一篇: 用VS2005制造WEB安装程序

    大家更多的是关注测试工具,测试技巧,而少有人去从根本上来分析、测试软件。一个优秀的软件性能测试工程师要具有宏观和微观的软件测试观。他要分析软件的架构,了解软件的运行模式,了解通讯协议,更是一个软件开发高手。就象一个医生,他要通过多年的深造和摸索,要了解病理、药理,他才能对症下药,好了,不多说了,说一下软件设计对软件性能的影响。这是我遇到的一些实际的例子。

    例子一:一个网站,允许注册用户可以上传一些图片、文档、影音文件,把这些文件做为大二进制文件存储到数据库中。功能并不是太复杂,软件的功能测试没有问题,开始进行性能测试。5个用户的并发都没有通过,功能出错了,性能测试也就进行不下去了,分析原因,原来软件设计的时候,为每一个上传的文件设计了一个“ID”字段做为主键,该字段是自增的,在ORACLE数据库中没有自增字段,需要编写触发器来自增,但是软件开发人员在应用程序中编写了一个函数,在上传文件前从数据库中获得最大ID,然后加一,再填写其他信息,选择文件,上传,这样在多用户使用的时候必然造成ID字段值重复,系统必然出错。这个错误修改后,进行性能测试,设计者把所有的上传文件都保存到一个数据表中,他没有考虑网站的流量和上传文件数量很多的情况,结果在进行数据库压力测试的时候,当数据库中有10万条记录时,假设每个上传文件的大小是1M,该数据表的查询、备份、恢复都非常困难,当多用户浏览、上传这些文件时,性能严重下降。这就是一个软件设计存缺陷。

    例子二:一个图形管理软件,架构采用的是B/S模式,通过在IE中嵌入ACTIVX控件,根据从数据库中读取出的测量点数据,在ACTIVX中绘制成各种曲线,该测量点数据是井的数据,每米取10个点,每点有16条数据,每口井的井深平均按5000米算,500口井的数据就非常庞大了。在性能测试的时候,我首先分析了软件的运行机制,客户端发出请求--WEB服务器(分析)--读取数据库数据--生成HTML和数据流返回客户端--客户端控件根据点数据绘制成曲线。从这些过程中看性能的瓶颈应该在WEB服务器和数据库间。(ACTIVX控件有的性能测试工具不支持,但协议可以看成是HTTP,并可以看成是一次请求),因ACTIVX运行在客户端,这部分的性能主要是受客户端影响。在性能测试过程中发现,性能真的是受数据读取速度的影响,更可怕的是,该数据库竟然没有设置索引,设置索引后,软件开发人员竟然在索引字段用了trim()函数来去掉空格,造成索引字段没有起到作用,汗一个!!!!。

    从上面的例子可以看出,设计才是决定性能的关键。

    发表于 @ 2008年06月29日 15:14:04|评论(loading...)|收藏

    新一篇: 用 JOTM 向Servlet中添加事务 | 旧一篇: 用VS2005制造WEB安装程序

    评论

    #ComingtoExpert 发表于2008-09-05 17:26:19  IP: 220.200.170.*
    好文章。

    好的性能是通过良好的设计进行设计出来的,不好的性能,往往通过较好的测试分析手段可以发现其瓶颈来改善的。
    #middle 发表于2008-09-06 23:15:27  IP: 221.218.105.*
    作者的推理根本不通!作者所说的问题都是在测试中发现的,而且也都通过测试很好的解决了。这就是说,决不是根本的设计方向的错误。这些问题在设计阶段,除非是神,任何人在当时当地都无法完全预料到。如果在早期阶段就投入精力到性能中,只会得不偿失。

    作者也没有了解过前人的经验之谈。Premature optimization is the source of all evil. Premature optimization means local over-optimization as well as global de-optimization.
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © newhappy