我试图搜索这个,但找不到答案。
我有一个方法,在其中经常有一个代码块调用,所以我将它重构为一个本地Func
。
现在因为我没有在其他地方使用那个代码块,所以有了这个而不是另一个方法。
但使用其他方法在性能方面是否更好? Func
是否被分配或以其他方式使用额外的处理时间或内存,因为它是在函数内部声明的,或者它是否被编译器缓存甚至实际成为幕后方法?
我知道这听起来像是一个微优化的东西,但在我的情况下,该方法经常被调用。所以也许这会改变这种考虑。
所以,基本上:
public T CalledVeryOften(...)
{
Func<...> block = () => ...;
//code that calls 'block' several times
}
或
public T CalledVeryOften(...)
{
//code that calls 'block()' several times
}
private ... block()
{
...
}
答案 0 :(得分:3)
但是,如果你能内嵌 Func
代码,它可以提高性能.. 也许。不知道如何做到这一点。
通过内联,我指的是我们在C ++中可以拥有的inline
关键字。它告诉编译器在该代码块中嵌入函数指令。我不确定C#是否能带来这样的好处。
顺便说一句,如果私有方法确实属于可以重用的方法块,并且为了提高性能而使用Func
,我会将其重构为原来的方式。
答案 1 :(得分:3)
它 微观优化:)除非你的程序明显减慢到一个不可接受的水平,并且分析确定根本原因是你正在做的事实函数调用,那么你可以考虑替代方案。
在宏伟的计划中,开销确实可以忽略不计。我肯定会在“我不必担心的事情”下提出这个问题。
此外,您可能在此过程中使代码更具可读性。