gpt4 book ai didi

c# - 函数内部函数的性能与使用私有(private)函数的对比

转载 作者:行者123 更新时间:2023-11-30 14:31:53 26 4
gpt4 key购买 nike

我试图搜索此内容,但找不到答案。

我有一个方法,里面有个代码块调用很频繁,所以我把它重构成了一个本地的Func

现在因为我没有在其他任何地方使用该代码块,所以使用它而不是其他方法是有意义的。

但是从性能方面来说,使用另一种方法是否更好? Func 是否被分配或以其他方式使用额外的处理时间或内存,因为它是在函数内部声明的,或者它是否被缓存甚至实际上由编译器在幕后制作成一个方法?

我知道这听起来像是微优化,但在我的例子中,该方法经常被调用。所以也许这会改变考虑因素。

所以,基本上:

public T CalledVeryOften(...)
{
Func<...> block = () => ...;

//code that calls 'block' several times
}

public T CalledVeryOften(...)
{
//code that calls 'block()' several times
}

private ... block()
{
...
}

最佳答案

不,性能上应该不会有太大差异。 Func 会编译为静态方法或实例方法,具体取决于您是否使用闭包。

但是,如果您可以内联 Func 代码,它可以提高性能。也许。虽然不确定该怎么做。

关于内联,我指的是我们可以在 C++ 中使用的 inline 关键字。它告诉编译器将函数指令嵌入到该代码块中。我不确定 C# 是否提供了这种好处。

顺便说一句,如果私有(private)方法确实属于可以重用的方法 block ,并且您正在使用 Func 来提高性能,我会将其重构回原来的样子。

关于c# - 函数内部函数的性能与使用私有(private)函数的对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19320498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com