3 回答
TA贡献1875条经验 获得超5个赞
最后在.NET 4.5中,CLR允许使用值提示/建议1方法内联MethodImplOptions.AggressiveInlining
。它也可以在Mono的后备箱中使用(今天提交)。
// The full attribute usage is in mscorlib.dll,
// so should not need to include extra references
using System.Runtime.CompilerServices;
...
[MethodImpl(MethodImplOptions.AggressiveInlining)]
void MyMethod(...)
1。此前使用的是“force”。由于有一些downvotes,我会试着澄清这个词。正如在评论和文档中一样,The method should be inlined if possible.特别是考虑到Mono(开放),考虑内联或更一般的(如虚函数),存在一些单特定的技术限制。总的来说,是的,这是对编译器的暗示,但我想这就是要求的。
TA贡献1807条经验 获得超9个赞
内联方法只是一种编译器优化,其中函数的代码被卷入调用者。
在C#中没有任何机制可以做到这一点,并且它们在支持它们的语言中被谨慎使用 - 如果你不知道为什么它们应该被用在某个地方,它们就不应该被使用。
编辑:为了澄清,有两个主要原因需要谨慎使用:
在没有必要的情况下,通过内联使用大量二进制文件很容易
从性能的角度来看,编译器往往比你应该知道更好
最好不要管它,让编译器完成它的工作,然后分析并确定内联是否是最适合你的解决方案。当然,有些事情是有意义的内联(特别是数学运算符),但让编译器处理它通常是最好的做法。
- 3 回答
- 0 关注
- 1647 浏览
添加回答
举报