问题描述
最近看了在dotnetpearls.com 说,静态构建函数取性能比较命中一笔可观的。
Recently read in a article on dotnetpearls.com here saying that static ctors take a substantial amount of perfomance hit.
无法捉摸,为什么?
推荐答案
我觉得大量是言过其实的最的用例。
I think "substantial" is an overstatement in most use cases.
有一个静态构造函数(即使它什么都不做)影响类型初始化的时候,由于存在/不存在的。大约有严格的时间保证,当你有一个静态构造函数。
Having a static constructor (even if it does nothing) affects type initialization time due to the presence/absence of the beforefieldinit flag. There are stricter guarantees about timing when you have a static constructor.
有关的最的代码,我建议这并没有太大的差别 - 但如果你是紧循环和访问类的静态成员,它可能。个人而言,我不会担心太多 - 如果你有怀疑,这是有关你的真正的应用程序,然后对其进行测试,而不是猜测。微基准很可能在这里夸大的效果。
For most code, I'd suggest this doesn't make much difference - but if you're tight-looping and accessing a static member of a class, it might. Personally I wouldn't worry about it too much - if you have a suspicion that it's relevant in your real application, then test it rather than guessing. Microbenchmarks are very likely to exaggerate the effect here.
值得注意的是.NET 4的 - 因此,任何基准测试应该真正表现出不同的版本为了是相关的。
It's worth noting that .NET 4 behaves somewhat differently to previous versions when it comes to type initialization - so any benchmarks should really show the different versions in order to be relevant.
这篇关于静态构造函数会导致性能开销?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!