工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2229|回复: 12

java提高性能

[复制链接]
发表于 2006-12-1 10:44 | 显示全部楼层 |阅读模式
不知道有没有人写过,今天我开个头,大家一起讨论讨论~~
1.这里比较一下ArrayList和LinkedList:
1).ArrayList是基于数组,LinkedList基于链表实现。
2).对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3).对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
4).查找操作indexOf,lastIndexOf,contains等,两者差不多。
这里只是理论上分析,事实上也不一定,比如ArrayList在末尾插入和删除数据就不设计到数据移动,不过还是
有这么个建议:随机访问比较多的话一定要用ArrayList而不是LinkedList,如果需要频繁的插入和删除应该
考虑用LinkedList来提高性能。
2.减少不必要的对象的创建是提高性能的好办法。
不仅对JAVA,所有语言都适用。


3.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。

4.在finally块中关闭Stream 程序中使用到的资源应当被释放,以避免资源泄漏。这最好在finally块中去做。不管程序执行的结果如何,finally块总是会执行的,以确保资源的正确关闭。

5.使类和成员的可访问能力最小化,复合优先于继承,接口优先于抽象类.
6.尽量不要将大对象放到HttpSession或其他须序列化的对象中,并注意及时清空Session
7.java中,设计了比较完善的错误处理机制。然而,错误处理机制是很要资源的。所有尽量的不捕获一些没必要捕获的异常
发表于 2006-12-1 13:23 | 显示全部楼层
8,使用缓存。
回复

使用道具 举报

发表于 2006-12-1 19:23 | 显示全部楼层

9,买台好的服务器

9,买台好的服务器,机子性能最重要了,只要代码不发生内存益处或者资源忘记关闭,机子不行的话,再优化的代码也没用
呵呵
回复

使用道具 举报

发表于 2006-12-2 16:16 | 显示全部楼层
严重同意3楼的意见!!!

我所在的公司很不建议程序员花心思去为了提高一点点效率而做一些额外的活(当然例如连接对象的释放等占用资源多的另当别论),而且特别BS那些为了提高效率而写恶心算法的行为.

系统的效率交给机器.让那些多余的单件模式,可变类定义之类的东东见鬼去吧!!!
回复

使用道具 举报

发表于 2006-12-2 16:23 | 显示全部楼层
楼上两位说得有理,但若是海量数据操作,想必要花点心思去设计以提高性能吧。
回复

使用道具 举报

发表于 2006-12-2 17:40 | 显示全部楼层
同意楼上~
回复

使用道具 举报

发表于 2006-12-2 20:36 | 显示全部楼层

唉 真是郁闷啊

公司的机子不行哇,只是eclipse+启动TOMCAT,就足够让我吐血了。
赛扬2.4+256M内存+一块老主板(主板身材比较娇小,但已经集成了显卡的了);
后来把内存追加到1G;
还是受不了;
最后把我自己大学用的机上的512内存也拔过来,居然发现,1G内存和1.5G内存的反应速度没两样,看来其他配置已经发挥到极限了。
天天吐血中,工作时间估计大概花了一半的时间在等机子反应了。
那种项目经理天天问你模块写完了没有?机子天天没反应的感觉实在是太难受了。
心很急,机器确慢拖拖的

唉,借此机会发发牢骚!不然精神都快崩溃了  哈哈
回复

使用道具 举报

发表于 2006-12-2 23:18 | 显示全部楼层
其实不为一点点效率而去挖空心思做算法的好处是公司可以让客户买更好的机器,从中间拿到更多的回扣-_-!!
回复

使用道具 举报

发表于 2006-12-2 23:19 | 显示全部楼层
纯属个人意见,只是路过说说,大家不要874^_^
回复

使用道具 举报

发表于 2006-12-3 14:07 | 显示全部楼层
原帖由 深圳情缘 于 2006-12-2 20:36 发表
公司的机子不行哇,只是eclipse+启动TOMCAT,就足够让我吐血了。
赛扬2.4+256M内存+一块老主板(主板身材比较娇小,但已经集成了显卡的了);
后来把内存追加到1G;
还是受不了;
最后把我自己大学用的机上 ...


暑假兼职的时候过的就是这种非人的日子.
这也是我早早就辞职的原因之一.
回复

使用道具 举报

发表于 2006-12-3 16:05 | 显示全部楼层
一般会有专门的开发机吧?

我做开发一般不会在自己机上跑,会放到开发机上跑.

我在自己机上试过开WAS跑程序,单纯WAS就占了800M的内存了.

我的机子是1G内存,AMD 3000+,性能还算OK,平时开两个IDE貌似还没太大问题.
回复

使用道具 举报

 楼主| 发表于 2006-12-4 09:52 | 显示全部楼层
个人觉得,提高性能是必要的,当然机器的性能也不能少,提高代码性能不过是开发过程中稍微注意下就可以了,比如上面提到的那些,平时注意下就可以了。
回复

使用道具 举报

发表于 2006-12-4 14:22 | 显示全部楼层
当然,如果能通过良好的编码习惯来使得程序有较好的执行效率,那肯定是应该的.但如果是需要写恶心算法,或者其他降低代码可读性的做法,我个人是比较BS的。

比如一些字符串操作,String a = new String("a"); 这类写法是肯定需要避免的。这是通过好的编码习惯提高代码效率的例子。

再比如对一些可变类(或许是当作不可变类使用的可变类)使用单件模式就显得不太必要,这样做虽然减少了不必要的对象创建,但无疑也增加了线程不同步带来的危险。而且在软件升级,扩展后往往会留下不安全的因素。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-5-16 01:00

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表