c# - 静态构造函数会导致性能开销?

标签 c# .net static constructor

最近在 dotnetpearls.com 上阅读一篇文章 here说静态 ctors 会受到大量的性能影响。

不明白为什么?

最佳答案

我认为在大多数用例中“大量”是一种夸大其词。

由于 beforefieldinit flag 的存在/不存在,拥有静态构造函数(即使它什么也不做)会影响类型初始化时间.当你有一个静态构造函数时,对时间有更严格的保证。

对于大多数 代码,我认为这没有太大区别 - 但如果您是紧密循环并访问类的静态成员,则可能会有所不同。就我个人而言,我不会太担心它 - 如果您怀疑它与您的真实应用程序相关,那么测试它而不是猜测。微基准测试很可能会夸大此处的影响。

值得注意的是 .NET 4 behaves somewhat differently to previous versions当涉及到类型初始化时 - 所以任何基准测试都应该真正显示不同的版本以便相关。

关于c# - 静态构造函数会导致性能开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2921828/

相关文章:

c# - 在 C# 中创建常量字典

VBA静态类 "WithEvents"?

c - 静态内联、外部内联和普通内联函数有什么区别?

.net - 处置 Microsoft.Owin.Hosting.WebApp 抛出 'System.ObjectDisposedException'

c# - 无法使用 Windows 服务从 odbc 连接(使用 dsn)打开数据库?

c# - XmlSerializer 改变编码

c# - 将属性设置为另一个属性的值

java - stub 时 PowerMockito NullPointerException

c# - 需要以内存/CPU 效率分析特定时间间隔内的近实时数据的想法

c# - 如何防止应用程序在任务管理器中被杀死?