嵌套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
posted @ 2018-11-06 15:04  -saligia-  阅读(1230)  评论(0编辑  收藏  举报