仅按顺序修改的索引器的 JIT 优化
我很好奇在这种情况下会发生什么:
int i = 0;
MessageBox.Show(i++.ToString ());
MessageBox.Show(i++.ToString ());
Array[i++] = Foo;
假设这是在方法中使用 i
的唯一方式,JIT 是否会删除 i
并将其替换为文字值?
I am curious as to what happens in this situation:
int i = 0;
MessageBox.Show(i++.ToString ());
MessageBox.Show(i++.ToString ());
Array[i++] = Foo;
Assuming this is the only way i
is used in the method,does the JIT strip out i
and replace it with literal values?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
生成的代码 (x86) 如下所示:
因此,JIT 不会优化变量或其更改。
x64 代码看起来类似。这也不会优化掉变量。
The generated code (x86) looks like this:
So, no the JIT won't optimise away the variable or it's changes.
The x64 code looks similar. That doesn't optimise away the variable either.