zoukankan      html  css  js  c++  java
  • 嵌套For循环性能优化

    请对以下的代码进行优化

    for (int i = 0; i < 1000; i++)
    	for (int j = 0; j < 100; j++)
    		for (int k = 0; k < 10; k++)
    			test(i, j, k);
    

    从循环变量i,j,k的实例化、初始化、比较、自增等耗时方面来进行优化。
    代码性能优化时尽可能地减少循环变量i、j、k的实例化、初始化、比较、自增的次数,同时不引起其他可能的耗时运算。

    原题代码耗时情况:

    变量 实例化(次数) 初始化(次数) 比较(次数) 自增(次数)
    i 1 1 1000 1000
    j 1000 1000 1000*100 1000*100
    k 1000*100 1000*100 100010010 100010010

    优化方案1:

    for (int i = 0; i < 10; i++)
    	for (int j = 0; j < 100; j++)
    		for (int k = 0; k < 1000; k++)
    			test(k, j, i);
    

    优化思想:将循环次数少的放在外面层, 循环次数多的放在内层, 减少变量的实例化次数和初始化次数

    方案耗时情况如下:

    变量 实例化(次数) 初始化(次数) 比较(次数) 自增(次数)
    i 1 1 10 10
    j 10 10 10*100 10*100
    k 10*100 10*100 101001000 101001000

    优化方案2:

    int i, j, k;
    for (i = 0; i < 10; i++)
    	for (j = 0; j < 100; j++)
    		for (k = 0; k < 1000; k++)
    			test(k, j, i);
    

    优化思想:将变量实例化放在循环外,减少实例化次数

    方案耗时情况如下:

    变量 实例化(次数) 初始化(次数) 比较(次数) 自增(次数)
    i 1 1 10 10
    j 1 10 10*100 10*100
    k 1 10*100 101001000 101001000
  • 相关阅读:
    实验3 颜色、字符串资源使用
    存储管理实验
    内存的分配与回收
    实验三
    JavaScript事件循环机制
    Js练习代码
    学习笔记(es6 react vue)
    express中间件的理解
    es6-Promise对象学习
    iscroll插件的使用
  • 原文地址:https://www.cnblogs.com/-saligia-/p/9915338.html
Copyright © 2011-2022 走看看