gpt4 book ai didi

C# - 重载性能增强查询

转载 作者:太空宇宙 更新时间:2023-11-03 21:56:40 25 4
gpt4 key购买 nike

所以我看了这篇文章C# Overloads它说您可以使用重载方法来消除复杂性并提高性能,它们提供了以下示例:

使用系统;

class Program
{
public static void Main()
{
ShowString(string.Empty);
ShowString("Category");
}

static void ShowString(string value)
{
if (value == string.Empty)
{
Console.WriteLine("Popular");
}
else
{
Console.WriteLine(value);
}
}
}

然后他们使用重载重写:

using System;

class Program
{
public static void Main()
{
ShowString();
ShowString("Category");
}

static void ShowString()
{
// Send default argument to overload.
ShowString("Popular");
}

static void ShowString(string value)
{
// We don't need an if check here, which makes
// ... calling this method directly faster.
Console.WriteLine(value);
}
}

使用重载变体是否会比使用具有默认参数值的方法提供更好的性能结果?

喜欢:

using System;

class Program
{
public static void Main()
{
ShowString();
ShowString("Category");
}

static void ShowString(string value = "Popular")
{
// We don't need an if check here, which makes
// ... calling this method directly faster.
Console.WriteLine(value);
}
}

或者最后一个代码块是否等同于第一个代码块?

最佳答案

不,默认参数至少与重载一样快,因为您的最后一个示例编译为:

....
ShowString("Popular");
ShowString("Category");
....

您的第二个示例(使用重载)(如果为 Release 而不是 Debug 构建)可能会在运行时内联,以便性能与上一个示例(默认参数)相同。

这个例子有点傻,因为 value == string.Empty 的成本几乎没有,但我想它可以说明这一点。然而,这可能是您应该从这个答案中得到的最重要的一点:在过早优化之前,您应该始终寻求更清晰/更易于维护的代码,因此可用性应该是决定您应该做什么的首要因素在特定情况下使用。

关于C# - 重载性能增强查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11914615/

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