经常来CSDN看看各个技术专家们的博客,确实是太多的牛人了,经常为他们独特的见解或者层层深入的分析感到高兴感到欣喜,每遇到这种技术文章,都会耐心的品味和学习!我承认,自己还是一个初出茅庐的程序猿毕业生,游览器收藏夹满满的全是各种技术文章技术问题的收藏,还分着各种文件夹,自己确“懒得”也写写博客记录自己的见解和学到的知识和大家一块分享,也许是没养成习惯吧,这种技术类的,这种电子式的习惯,有点效率低的感觉,真的有点不习惯,因为自己还得给写作文一样组织好语言,组织好代码,我作文一项不咋滴,数理化还是很可以的。
今天不知道为啥,翻看着这程序优化类的文章,忽然来了个雅兴,对着开通不久的CSDN博客第一次敲起键盘,尽管不是100%的原创,但也算自己的一个尝试,再说了自己好不容易有这个“情怀”和兴致!希望这是我记录归纳总结和大家一起分享这一习惯的开始吧。
关于java程序性能优化文档书籍还是有几本的,网上文档一搜很多,耐心的看下来,就比较基础或规范的层次来说,也就那么常见的“几点”,下边我就“摘录”几点吧。
一、使用条件操作符替代"if (cond) return; else return;"结构
//条件操作符更加的简捷 //例子: public class if { public int method(boolean isdone) { if (isdone) { return 0; } else { return 10; } } } //更正: public class if { public int method(boolean isdone) { return (isdone ? 0 : 10); } }二、不要在循环体中实例化变量
//在循环体中实例化临时变量将会增加内存消耗 //例子: import java.util.vector; public class loop { void method (vector v) { for (int i=0;i < v.size();i++) { object o = new object(); o = v.elementat(i); } } } //更正: //在循环体外定义变量,并反复使用 import java.util.vector; public class loop { void method (vector v) { object o; for (int i=0;i<v.size();i++) { o = v.elementat(i); } } }三、尽可能的使用栈变量
/*如果一个变量需要经常访问,那么你就需要考虑这个变量的作用域了。static? local?还是实例 变量?访问静态变量和实例变量将会比访问局部变量多耗费 2-3 个时钟周期。 例子:*/ public class usv { void getsum (int[] values) { for (int i=0; i < value.length; i++) { _sum += value[i]; // violation. } } void getsum2 (int[] values) { for (int i=0; i < value.length; i++) { _staticsum += value[i]; } } private int _sum; private static int _staticsum; } /*更正: 如果可能,请使用局部变量作为你经常访问的变量。 你可以按下面的方法来修改 getsum()方法:*/ void getsum (int[] values) { int sum = _sum; // temporary local variable. for (int i=0; i < value.length; i++) { sum += value[i]; } _sum = sum; }写到了这了,看博文的你,肯定会说:我擦,老子都把裤子脱了,你就让我看这个!然后不屑的你离开了.....
确实是,我很理解你们的心情,《java性能优化--让程序跑的更快、更稳》《effictive java》里边也有相关涉及,网上文章文档更是一堆,我都有很多这类小文档,我都读了不下5遍了,翻来覆去不就是它们吗,而且JVM优化更显得重要些吧。
但我5遍以后再看它们,我觉得自己确实知道,但平常怎么很少注意呢,即使注意了感觉也没作用呢,有时候还被别人叫做“死脑筋”。确实是,一些事要根据“情形”而定吗,本来吃的很多,一点也饿不死,何必非争着省那么一个米粒儿呢,在这个基础上每个人都有不同见解。
这,不是性能优化不优化高不高的问题,而是一种合理性的规范问题!当一件小事认认真真做成一种习惯时,真正的大事到来时,就会游刃有余,梦想也是一样!
让规范成为习惯.....
第一次写,忐忑,不知所云......
对了,对性能优化或者java技术感兴趣的童鞋,推荐读读《深入理解Java虚拟机:JVM高级特性与最佳实践》这本书,很不错,国人书中的精品,很有助于你性能优化方面的知识。书的电子版:电子版可预览可下载