关于程序执行效率的一些想法
今天写程序的时候我考虑到在一个for循环中加上if判断的时候效率的问题(循环上万、十万等数量级的时候),一开始的想法很简单,就是能不加就不加,尽管不知道会影响多少的效率,但是不加总会比加上要好。正好今晚超哥在,我就请教了一下超哥,
其实很简单,主要看这个循环的有效循环次数,神马是有效循环次数呢比如
int sum = 0; for(int i=0; i<list.size(); i++){ if(list(i)%2==0){ sum +=list(i); } }
在上个循环中,会循环1万次,但是你会发现有效循环是只有5k次的,也就是说我们执行了另外5k次的无效循环,这样的时间就是相比下明显的浪费了。
假如说我们在制作这个List的时候他就是全部是%2==0的数据,那么就不必要去循环无意义的5k次了。
可能刚才的代码不规范说的也不太清楚。但是大体能明白那个意思。
其实循环是挺消耗CPU的一种操作,所以我们在每次做循环的时候要尽量保证每次循环都是有意义的。尽量减少无意义循环的次数。
还有就是I/O读写操作,对于I/O操作是挺消耗时间的,所以在循环的时候能避免I/O操作就避免。不然你会发现CPU占用很低,但是硬盘狂闪的情况,因为计算机在疯狂的进行I/O操作。