Dre*_*kes 9 .net c# performance calling-convention
如果有的话,将参数作为参数传递给静态方法更快,而不是让方法是非静态的,并通过实例成员访问相同的值.假设该方法以只读方式访问这些成员.
在所有其他条件相同的情况下,调用静态方法比调用实例方法要快一些.
在所有其他条件相同的情况下,调用不带参数的方法比使用参数调用方法要快一些.
考虑:
private Thing _thing;
void DoTheThing()
{
_thing.DoIt();
}
Run Code Online (Sandbox Code Playgroud)
与此等效代码相对应:
private Thing _thing;
// caller's responsibility to pass "_thing"
static void DoTheThing(Thing thing)
{
thing.DoIt();
}
Run Code Online (Sandbox Code Playgroud)
我无法想象这种优化会真正增加任何价值的现实世界情况,但作为一个思想实验(对于那些喜欢讨论这种事情的人),是否真的有好处,如果有的话有多少参数(什么类型等)以另一种方式提供平衡?
还有其他因素会考虑到这一点吗?例如,静态方法_thing作为局部变量而不是字段进行访问.
对于非虚拟方法,我可以使用一种可能的性能优势:静态方法不需要首先测试无效的引用(NullReferenceException在适当的地方抛出).
我不认为这目前有任何优势,但它可能是一个.我不确定它是否适用于您的特定示例 - 并且很难看出它在您实际想要使用该值的任何情况下如何应用.