请对以下的代码进行优化

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

嵌套For循环性能优化的更多相关文章

  1. 【Java】嵌套For循环性能优化案例

    参考资料:http://cgs1999.iteye.com/blog/1596671 1 案例描述 某日,在JavaEye上看到一道面试题,题目是这样的:请对以下的代码进行优化 for (int i  ...

  2. 嵌套For循环性能优化案例

    转自:http://cgs1999.iteye.com/blog/1596671 涨知识~~~ 1 案例描述 某日,在JavaEye上看到一道面试题,题目是这样的:请对以下的代码进行优化 for (i ...

  3. php 大数组 foreach 循环嵌套的性能优化

    前提:最近在做后台的时候,页面加载太慢,故第一时间想到的自然是优化SQL, 优化后sql查询速度从 2秒变成了零点几秒, 以为就这麽完事了,然并卵,加载竟然花费30秒! 这麽慢,然后在代码中分块记录它 ...

  4. java 异步查询转同步多种实现方式:循环等待,CountDownLatch,Spring EventListener,超时处理和空循环性能优化

    异步转同步 业务需求 有些接口查询反馈结果是异步返回的,无法立刻获取查询结果. 正常处理逻辑 触发异步操作,然后传递一个唯一标识. 等到异步结果返回,根据传入的唯一标识,匹配此次结果. 如何转换为同步 ...

  5. Android性能优化之渲染

    Google近期在Udacity上发布了Android性能优化的在线课程,目前有三个篇章,分别从渲染,运算与内存,电量三个方面介绍了如何去优化性能,这些课程是Google之前在Youtube上发布的A ...

  6. Android性能优化之渲染篇

    下面是渲染篇章的学习笔记,部分内容和前面的性能优化典范有重合,欢迎大家一起学习交流! 1)Why Rendering Performance Matters 现在有不少App为了达到很华丽的视觉效果, ...

  7. SAP+DB2 糟糕的报表查询『ZCOR0015』 优化全程记录

    ZCOR0015的优化全过程记录文档 2015年3月,今天无意翻到这篇写于2010年7月的文档,回想那时的工作,毕业3年初出茅庐的我面对接触不多的SAP+DB2竟敢操刀动斧,自信满满. 虽然这过程一路 ...

  8. Android开发笔记(4)——MainActivity.java文件修改&布局嵌套

    笔记链接:http://www.cnblogs.com/igoslly/p/6805020.html         笔记以开发名为CoffeeOrder的app活动为线索,介绍app如何从功能设计→ ...

  9. 【转载】Android性能优化之渲染篇

    下面是渲染篇章的学习笔记,欢迎大家一起学习交流! 1)Why Rendering Performance Matters 现在有不少App为了达到很华丽的视觉效果,会需要在界面上层叠很多的视图组件,但 ...

随机推荐

  1. html5验证自适应

    // 移动端跳转 var OS = function() { var a = navigator.userAgent, b = /(?:Android)/.test(a), d = /(?:Firef ...

  2. 发布js插件zhen-chek(用来检测数据类型)到npm上

    今天想到js本身是弱类型,在实际项目中很多时候需要数据类型检测.于是打算做一个判断数据类型的js插件,发布到npm上面. 基本思路: 1,输入参数,便返回数据类型,所有数据类型如下 '[object ...

  3. springmvc快速入门(XML版本)

    1)springmvc快速入门(传统版) 步一:创建springmvc-day01这么一个web应用 步二:导入springioc,springweb , springmvc相关的jar包 步三:在/ ...

  4. Android 中更新 UI 的四种方式

    runOnUiThread handler 的 post handler 的 sendMessage View 自身的 post

  5. 【JavaScript】全面解析offsetLeft、offsetTop

    假设 obj 为某个 HTML 控件.obj.offsetLeft 指 obj 距离左方或上层控件的位置,整型,单位像素. obj.offsetRight 指 obj 距离右方或上层控件的位置,整型, ...

  6. C++之ListNode

    单链表,弄清楚可stl中list的区别 ListNode的结构 struct ListNode { int val; //当前结点的值 ListNode *next; //指向下一个结点的指针 Lis ...

  7. Scala语法03 - 函数

  8. Webupload+PHP上传大文件

    1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使 ...

  9. 用Python计算三角函数之acos()方法的使用

    用Python计算三角函数之acos()方法的使用 acos()方法返回x的反余弦值,以弧度表示. 语法 以下是acos()方法的语法:     acos(x) 注意:此函数是无法直接访问的,所以我们 ...

  10. Python 的内置函数__import__

    我们知道import语句是用来导入外部模块的,当然还有from...import...也可以,但是其实import实际上是使用builtin函数__import__来工作的.     在一些程序中,我 ...