论坛首页 Java企业应用论坛

关于性能优化

浏览 39463 次
精华帖 (2) :: 良好帖 (10) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2010-11-16   最后修改:2010-11-16
我发现一个现象,很多两三年以下的人写代码动不动就扯性能,其实他们大部分人根本不知道到底哪是性能瓶颈,函数调用的效率,CPU执行指令需要的时间...工作效率低不说,还考虑很多没用的东西。个人感觉,性能这个东西应该考虑:
1.考虑程序的应用范围。如果你是给核反应堆写实时程序,那每一步你可能都得考虑,其他就大部分通用程序而言,你不用每一步都考虑。
2.性能要考虑关键瓶颈。不是每一步都是关键,关键瓶颈不是写之前提前考虑出来的,而是测出来的。很多你以为瓶颈的地方往往不是瓶颈。
3.低效的算法+大量的处理数据两者结合往往是导致效率低下的根本原因,而函数调用,拆分函数等不是。JAVA初学者喜欢怀疑函数调用,C++派则彻底怀疑继承结构和堆上的数据,很有意思的现象。即使低效的算法处理小量数据也没必要优化,e.g.冒泡排序和快速排序在排少量数据的时候的性能差异不需要考虑。

大家说说自己的看法。

P.S.编程里面真的有很多不符合直觉的结论。比如边开发边考虑性能优化是否必要,比如添加人手是否能提高项目进度,真的是很有意思。
   发表时间:2010-11-16   最后修改:2010-11-16
1,性能确实不需要每一步都考虑,但是也是不能不考虑的。作为一个程序员,不是代码写出来,跑的通就可以心安理得的,对吗。

2,对于没有经验的程序员,性能问题是测出来的;对于有经验的程序员,性能问题是预测出来的。即使预测的有偏差,未雨绸缪也总好过亡羊补牢,对吗。

3,你自己也说了“小量数据”,“少量数据”,对吗。

心态放平和点,对于成长有好处。
0 请登录后投票
   发表时间:2010-11-16  
如果按你说的ArrayList和LinkedList在编程中是不需要注意的了,随便用就行了。。

代码写多了,对代码的要求也会高点,我们也希望能写出性能高效,优雅简洁的代码。。简洁和高性能一般都会有冲突的,这需要我们去权衡。。

ps:架构决定了性能的大部分,所以架构搭的好,总体性能也就不会差。代码的优化算不上什么。。但就是看不惯。。
0 请登录后投票
   发表时间:2010-11-16  
xixix2004 写道
1,性能确实不需要每一步都考虑,但是也是不能不考虑的。作为一个程序员,不是代码写出来,跑的通就可以心安理得的,对吗。

2,对于没有经验的程序员,性能问题是测出来的;对于有经验的程序员,性能问题是预测出来的。即使预测的有偏差,未雨绸缪也总好过亡羊补牢,对吗。

3,你自己也说了“小量数据”,“少量数据”,对吗。

心态放平和点,对于成长有好处。


赞成xixix2004 的说法,很多时候,你能预见到的问题,就没有必要到测试的时候才去发现,改正
0 请登录后投票
   发表时间:2010-11-16  
赞成2楼和三楼的观点。虽然可能平时大家注意的并不是真正的性能瓶颈。但是如果不重视自己代码的书写规范和简洁,那么写出来的代码就是隐藏的瓶颈,是你最后很难优化出来的东西。有习惯的程序员用stringbuffer和stringbuilder,但是如果是不重视,就会有人用+连接,在多处,一定数据量的情况下,都可能产生隐含问题等
0 请登录后投票
   发表时间:2010-11-16  
对于性能问题,我同意lz 2.性能要考虑关键瓶颈。不是每一步都是关键,关键瓶颈不是写之前提前考虑出来的,而是测出来的。很多你以为瓶颈的地方往往不是瓶颈。 只有找到了瓶颈才能想法击破。。。
0 请登录后投票
   发表时间:2010-11-16  
对于性能
1.对于新手.不要优化.
2.对于老手.建议不要优化.
0 请登录后投票
   发表时间:2010-11-16  
piao_bo_yi 写道
我发现一个现象,很多两三年以下的人写代码动不动就扯性能,其实他们大部分人根本不知道到底哪是性能瓶颈,函数调用的效率,CPU执行指令需要的时间...工作效率低不说,还考虑很多没用的东西。个人感觉,性能这个东西应该考虑:
1.考虑程序的应用范围。如果你是给核反应堆写实时程序,那每一步你可能都得考虑,其他就大部分通用程序而言,你不用每一步都考虑。
2.性能要考虑关键瓶颈。不是每一步都是关键,关键瓶颈不是写之前提前考虑出来的,而是测出来的。很多你以为瓶颈的地方往往不是瓶颈。
3.低效的算法+大量的处理数据两者结合往往是导致效率低下的根本原因,而函数调用,拆分函数等不是。JAVA初学者喜欢怀疑函数调用,C++派则彻底怀疑继承结构和堆上的数据,很有意思的现象。即使低效的算法处理小量数据也没必要优化,e.g.冒泡排序和快速排序在排少量数据的时候的性能差异不需要考虑。

大家说说自己的看法。


比较同意楼主的看法。
我经常遇到的一个情况是系统一慢,直觉就是数据库抓个快照,拿出来一分析,加两索引,改几个sql查询;系统好了。

90%以上都不是应用服务器并发性能,代码函数调用等其他原因引起的性能问题。


还是那句老话:Premature optimization is the root of all evil.

以上情况建立在编程平均水平比较低的普通国内软件企业。水平高的请飘过。
0 请登录后投票
   发表时间:2010-11-16   最后修改:2010-11-16
对于新手 写的时候动动脑子 别写出内存泄漏的代码 就谢天谢地了

有些人习惯性的爱写内存泄漏的代码
真不知道怎么想的
0 请登录后投票
   发表时间:2010-11-16  
qianhd 写道
对于新手 写的时候动动脑子 别写出内存泄漏的代码 就谢天谢地了

有些人习惯性的爱写内存泄漏的代码
真不知道怎么想的


我觉得新手想要写出内存泄漏的代码是很难的,或者说你让他写一段内存泄漏的代码他都写不出来。要不你写一个试试?
1 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics