android代码优化技术记录
1、length、length()、size的优化
举例:
int array_one[] = {1,2,3,4,5,6,7,8,9,10}; int array_two[] = {1,2,3,4,5,6,7,8,9,10,11..100}; for(int i=0;i<array_one.length;i++) { for(int k=0;k<array_two.length;k++) { doSth(); } }
上述代码,系统需要对每次的for循环进行数组长度的计算,系统开销自然加大,我们可以这样:
int array_one[] = {1,2,3,4,5,6,7,8,9,10}; int array_two[] = {1,2,3,4,5,6,7,8,9,10,11..100}; int length_array_one = array_one.length; int length_array_two= array_two.length; for(int i=0;i<length_array_one;i++) { for(int k=0;k<length_array_two;k++) { doSth(); } }
同理在计算jsonArray或者其他数组的时候,就可以通过上述方式进行优化
2、for、while的优化
int array[] = {1,2,3,4..100}; int length_array = array.length; for(int i=0;i<length_array;i++)//假设我们寻找array中元素等于20的元素 { if(i == 20) { doSth(); } }
如果你已经在循环中,完成了指定的业务,这个时候没有其他业务的话,还继续进行for循环,这样时间成本就增大了,我们可以这样优化:
int array[] = {1,2,3,4..100}; int length_array = array.length; for(int i=0;i<length_array;i++)//假设我们寻找array中元素等于20的元素 { if(i == 20) { doSth(); break; } }
在适当的时候从循环中跳出来。同理如果是while循环的话,就把while 的循环条件调整为false,然后退出来
3、变量生命周期的优化
int array[] = {1,2,3,4..100}; int length_array = array.length; for(int i=0;i<length_array;i++) { String str[] = new string[1000]; doSth(str); //str只是作为参数使用,不对其进行修改 }
看上述代码,每次循环都有新建一个数组,系统的空间使用成本成本增加我们可以这样:
int array[] = {1,2,3,4..100}; int length_array = array.length; String str[] = new string[1000]; for(int i=0;i<length_array;i++) { doSth(str); //str只是作为参数使用,不对其进行修改 }
这样的调整,只需要新建一次,就有效的缩小了空间成本
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。