gpt4 book ai didi

c# - 为什么编译器不优化这段代码

转载 作者:太空狗 更新时间:2023-10-30 00:14:14 26 4
gpt4 key购买 nike

我有一个使用第三方工具迭代点集合的代码。

for (int i = 0; i < pcoll.PointCount; i++) { /* ... */ }

通过 dotTrace 进行分析时,我注意到每次迭代都会访问 PointCount-proerty(见上图)

.

我预计此属性的值会被编译器优化掉,但显然这并没有发生。也许这实际上是基于 COM 的第 3 方库中的问题,或者在收集信息时也是 dotTrace self 中的问题。

我不确定这个主题是否更适合 Gis.StackExchange。然而,也许有人知道在什么情况下不会发生优化或如何发生优化。

最佳答案

简单地说,编译器如何知道 pcoll.PointCount 是否会在两次调用之间发生变化?它无法安全地假设该值将保持不变,因此无法通过缓存第一次调用 pcoll.PointCount 的值来优化此代码。

关于c# - 为什么编译器不优化这段代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31114252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com