gpt4 book ai didi

c# - 我可以检查 C# 编译器是否内联方法调用吗?

转载 作者:IT王子 更新时间:2023-10-29 04:20:30 24 4
gpt4 key购买 nike

我正在编写一个 XNA 游戏,我在其中进行逐像素碰撞检查。检查这个的循环通过移动一个 int 和按位 ORing 来实现,并且通常难以阅读和理解。

我想添加私有(private)方法,例如 private bool IsTransparent(int pixelColorValue) 以使循环更具可读性,但我不希望方法调用的开销,因为这对性能非常敏感代码。

有没有办法强制编译器内联这个调用,或者我只是希望编译器会做这个优化?

如果没有办法强制这样做,除了阅读反汇编代码之外,是否有办法检查该方法是否被内联?如果该方法是内联的并且不存在其他调用者,它会在反射中出现吗?

编辑:我不能强制它,所以我可以检测到它吗?

最佳答案

不,你不能。更重要的是,决定内联的不是 VS 编译器,它接受你的代码并将其转换为 IL,而是 JIT 编译器,它接受 IL 并将其转换为机器代码。这是因为只有 JIT 编译器对处理器架构了解得足够多,才能决定将方法内联是否合适,因为这是指令流水线和缓存大小之间的权衡。

因此,即使查看 .NET Reflector 也无济于事。

关于c# - 我可以检查 C# 编译器是否内联方法调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/616779/

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