首页 新闻 会员 周边 捐助

大牛们来解决一下问题,是优化的问题吗具体怎么优化的呢

0
悬赏园豆:50 [已解决问题] 解决于 2017-07-19 22:04
 在MyEclipse10里执行以下代码瞬间就执行完成了
char a='a';
char b;
for (int j=1;j<=10000;j++){
    for (int i=1;i<=1000;i++)
    b=a;
    for (int i=1;i<=1000;i++)
for (int k=1;k<=i+1000;k++)
    b=a

同样的代码在VisualStudio2010里用C++执行要用近40秒

谁知道为什么这个效率这么高?
一百万条赋值语句瞬间完成
不存在堆空间和对象句柄转移问题啊, char不是基本类型吗,没有堆 
不会就问咯的主页 不会就问咯 | 初学一级 | 园豆:19
提问于:2017-07-19 12:43
< >
分享
最佳答案
0

你在最后加一句使用b的语句试试看

收获园豆:50
吴瑞祥 | 高人七级 |园豆:29449 | 2017-07-19 13:40

没明白您什么意思,直接输出吗,还是怎么使用?

 

不会就问咯 | 园豆:19 (初学一级) | 2017-07-19 13:46

@不会就问咯: 直接输出也可以

吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-19 15:08

@吴瑞祥: 不知道为什么会比C++快,应该是做优化了,可优化什么地方了呢,求大牛解答

不会就问咯 | 园豆:19 (初学一级) | 2017-07-19 18:59

@不会就问咯: 你变量B最后用一下.看两边的对比是不是差不多很大.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-19 19:57

@吴瑞祥: 嗯,调用起来差不多的,为什么会这样?

不会就问咯 | 园豆:19 (初学一级) | 2017-07-19 20:46

@不会就问咯: 意思就是变量b有被使用.两边就没什么区别.

没被使用.就区别非常大?

吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-19 21:57

@吴瑞祥: 是的。还有很多人认为是Eclipse优化的问题,如果是优化问题,具体优化在哪里呢?如何优化呢??

不会就问咯 | 园豆:19 (初学一级) | 2017-07-19 21:59

@不会就问咯: 就是编译器优化.

把没用被使用的变量的没有外部调用的赋值操作优化掉了

吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-19 22:00

@吴瑞祥: 还是蒙蒙的,是类似于懒加载的机制吗

不会就问咯 | 园豆:19 (初学一级) | 2017-07-19 22:03

@不会就问咯: 不是.编译器能知道这个变量有没被使用.

他知道这个变量没被使用.只是被简单的赋值了一下.编译器就认为这个赋值的代码是垃圾代码.

删掉了.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-19 22:04

@吴瑞祥: 垃圾回收了,最后调用的时候就和C++用了差不多的时间,进行重新赋值,给予空间是吗,

不会就问咯 | 园豆:19 (初学一级) | 2017-07-19 22:06

@不会就问咯: 不是垃圾回收...就是代码直接没掉了.明白了吗...

吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-19 22:21

@吴瑞祥: 直接没掉  最后如果调用就重新加载回来?

不会就问咯 | 园豆:19 (初学一级) | 2017-07-19 22:24

@不会就问咯: 就没啦!如果有调用.代码就不删了.

没调用.代码就删了...没重新加载回来的说法.是2个编译时状态.

是在编译时干的.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-19 22:25

@吴瑞祥: 哦哦哦  太感谢了

不会就问咯 | 园豆:19 (初学一级) | 2017-07-19 22:35
其他回答(1)
0

这代码格式也不是很清楚呀

fcyh | 园豆:568 (小虾三级) | 2017-07-19 18:29

z最后少个;   能运行的,就是不知道为什么会比C++快,应该是做优化了,可优化什么地方了呢,求大牛解答

支持(0) 反对(0) 不会就问咯 | 园豆:19 (初学一级) | 2017-07-19 18:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册