for、while循环优化

在看GO语言时看到别人写了一段把数组先获取长度用变量保存长度,在去循环遍历的代码。
以前写的都是在for循环里面条件判断时在获取长度,想想这样性能能提高多少,就用java测试下下面是代码

package test;

public class Test1 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};
        long sum1 = 0, sum2 = 0;
        //测试1万次
        for(int a=0; a<10000; ++a){
            long time1 = System.nanoTime();
            for(int j=0; j<10000; ++j){
                for(int i=0; i<arr.length; ++i){
                    int t = arr[i];
                }
            }
            //计算处理完任务的纳秒
            time1 = System.nanoTime() - time1;
            sum1 += time1;
            
            long time2 = System.nanoTime();
            for(int j=0; j<10000; ++j){
                int len = arr.length;
                for(int i=0; i<len; ++i){
                    int t = arr[i];
                }
            }
            //计算处理完任务的纳秒
            time2 = System.nanoTime() - time2;
            sum2 += time2;
        }
        System.out.println("sum1:"+sum1+", sum2:"+sum2+",sum1/sum2:"+(sum1*1.00)/sum2);
        
    }
}

结果:
1.sum1:1834534466, sum2:342085548,sum1/sum2:5.3627944142206205
2.sum1:1854752830, sum2:345797811,sum1/sum2:5.363691645809753
3.sum1:1855739585, sum2:346774010,sum1/sum2:5.351437914854115
4.sum1:1855739585, sum2:346774010,sum1/sum2:5.351437914854115
5.sum1:1850499523, sum2:345726700,sum1/sum2:5.352492367526141

这里为了让差别更明显故意循环很多次,实际应用中不会有这么明显差别,正明把for循环里面的判断条件获取长度的过程,写在for外部会提高性能。while同理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,647评论 25 708
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,571评论 0 17
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 左铃几人暧昧的目光看着两人,更是看的狐小灵不知道怎么办,只想快点离开。 “小灵,这是什么时候的事儿啊?你怎么不早点...
    可可豆子阅读 235评论 0 5
  • (开始) (标题)iApc(/标题)(链接)https://duming666.wodemo.net/down/2...
    独名阅读 1,640评论 1 3