锁定老帖子 主题:一道简单的面试题
该帖已经被评为新手帖
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发表时间:2010-12-03
最后修改:2010-12-03
crane.ding 写道 前几天有位朋友跟我聊天说,最近他去面试遇到一个面试题,叫我帮他分析一下,是一道Java的面试题目;题目是这样的:请对以下的代码进行优化
原题代码如下 for (int i = 0; i < 1000; i++) for (int j = 0; j < 100; j++) for (int k = 0; k < 10; k++) log(i * j * k); 对于以上的代码,我给出了两个优化方案,优化一代码如下 for (int i = 0; i < 10; i++) for (int j = 0; j < 100; j++) for (int k = 0; k < 1000; k++) log(i * j * k); 优化二代码如下 int i, j, k; for (i = 0; i < 10; i++) for (j = 0; j < 100; j++) for (k = 0; k < 1000; k++) log(i * j * k); 首先先来分析一下这三段代码,如下三个表 原题代码分析表
优化一代码分析表
优化二代码分析表
从以上三个表的分析看,优化一的性能和优化二比原代码性能好,其中优化二的性能是最好的。从而也可以说在以上的条件下,将大的循环放在内侧,小的循环放在外侧,其性能会提高;减少变量的实例化,其性能也会提高。对于以上的优化,如果在循环次数少的情况下,其运行出来的效果不大;而在循环次数较多的情况下,则其效果是比较明显的。 以上是我自己对该题的一个优化和分析,如果大家有更好的优化方法或我又错误的地方,请大家多多指教。 数读得越多,怎么脑袋的含水量就越多呢, 中国白领的悲哀啊! 我对上面的优化就非常简单: System.out.println(""); |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||