写代码的时候总是能碰到这样的结构

 

for(.......){                                       int temp = ?

    int temp = ?;                                   for( ...........){

}                                                          }

 

不知道编译器会不会对这两种结构做优化,先测试一下大数据集的执行效率对比

然后进行内存测试

 

811ms

java测试,观察变量定义在循环内部的循环外部的效率区别(时间)

848ms

java测试,观察变量定义在循环内部的循环外部的效率区别(时间)

 

不能说明问题,执行多次,结果都差不多,现在加大数据的数量

37s

java测试,观察变量定义在循环内部的循环外部的效率区别(时间)

37s

java测试,观察变量定义在循环内部的循环外部的效率区别(时间)

精确到秒,时间竟然是一致的,我也很惊讶,我以为 变量定义在内部每次被创建会消耗大量时间

 

 

 

下面是内存测试

 

注意,此时gc应该在后台是有工作的

java测试,观察变量定义在循环内部的循环外部的效率区别(时间)

 

java测试,观察变量定义在循环内部的循环外部的效率区别(时间)

 

 

变量定义在内部,加快了垃圾回收的速度,我也是经过了多次测试,一开始前后内存相同,我还以为是代码问题

 

java测试,观察变量定义在循环内部的循环外部的效率区别(时间)

java测试,观察变量定义在循环内部的循环外部的效率区别(时间)

 

结论是变量定义在内部开销可能第一点,但是不否认多任务情况下,gc繁忙的时候,采取哪种方式更优的问题,不过将变量定义在内部,有助于代码的可读性。

 

 

相关文章: