c# - 方法封装的性能成本

标签 c#

封装方法是否有性能成本?一个非常简短的任意示例:

        public static decimal Floor(decimal value)
        {
            return Math.Floor(value);
        }

上面的函数会被内联吗?如果是这样,它是否与从代码中调用 Math.Floor() 完全相同?在写这篇文章之前我谷歌过。

最佳答案

方法可能会被内联(在 JIT 时间,C# 编译器不会在 IL 中内联方法)。即使没有成本也不太可能影响您的整体计划。由于优化和性能数字特定于特定代码/应用程序,因此如果您发现性能问题,则需要衡量您的情况。

特别是Writing Faster Managed Code: Know What Things Cost MSDN 上的文章对方法调用的成本进行了以下估算:如果未优化调用,最多 6.8 纳秒(对于 2003 级别的机器)。

考虑阅读本文的其余部分。特别是表 3 不仅讨论了方法调用的成本,还讨论了像加法、减法、乘法和除法这样微不足道的操作的成本。

如果您需要确认方法是否内联 - 许多 SO 问题都涵盖了它,例如 Can I check if the C# compiler inlined a method call?

关于c# - 方法封装的性能成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32663051/

相关文章:

c# - 加载关卡后声音无法播放

c# - 了解委托(delegate)和任务

c# - jQuery:在 jquery ajax json 调用中返回字符串响应

c# - 我可以在 LINQ to Entities 中动态构建 where 子句吗?

c# - 从另一个应用程序服务访问应用程序服务

c# - 了解 dotPeek 反编译代码中编译器生成的类型

c# - 调用SourceInclude而不手动指定所有属性

c# - Azure 应用服务 - 更新 .NET Core 运行时

c# - 不在循环内执行switch语句,并且循环不循环

c# - 我可以在自定义 WPF Canvas 控件中绘制点网格吗?