C#:哪个更快,多少,为什么?
我的很多类中都有一个方法,通常只返回列表或字典中的字符串。看看下面的例子C#:哪个更快,多少,为什么?,c#,.net,C#,.net,我的很多类中都有一个方法,通常只返回列表或字典中的字符串。看看下面的例子 public string GetValueByKey(string key) { if (!_configItems.TryGetValue(key, out string value)) { Logger.Warn($"Key not found: {key}"); } return value; } public int GetValueByKeyInt(strin
public string GetValueByKey(string key)
{
if (!_configItems.TryGetValue(key, out string value))
{
Logger.Warn($"Key not found: {key}");
}
return value;
}
public int GetValueByKeyInt(string key)
{
if (!_configItems.TryGetValue(key, out string value))
{
Logger.Warn($"Key not found: {key}");
}
return int.Parse(value);
}
我想知道的是,使用GetValueByKeyInt是更好,还是使用
GetValueByKey
和int.Parse()
在调用该方法时使用它更好?GetValueByKeyInt
从定义上讲会更慢准确地说慢多少取决于很多因素。您正在运行框架的哪个版本?32位还是64位?哪种紧张?什么操作系统?什么处理器?等等
基本上,GetValueByKeyInt
做了更多的工作(它调用int.Parse,而其他代码不调用,否则它们是相同的),因此它的速度必须较慢。另外,当TryGetValue返回false时,int.Parse将抛出一个异常(这是一个相当大的性能损失)。您可能想改用TryParse
但老实说,您应该进行基准测试,看看它是否对您的环境有影响。这在很大程度上取决于您想要的是int还是字符串。如果你想要一个int,
GetValueByKeyInt
会慢一些,但是它会给你想要的东西(这更重要)。如果你先返回,然后解析,或者在返回之前解析,这没什么大不了的。你知道“过早优化是万恶之源”这句话吗?这个问题是一个很好的例子。这是系统中需要“快速”的性能关键部分吗?如果不是,那么调用此方法的客户机的使用注意事项才是重要的-调用者接收回int是否更方便?如果是这样,则返回一个int。始终使用探查器来确定某个对象的运行速度,更重要的是,在哪里(如果有)存在性能瓶颈。除此之外,请查看(OT)注意,如果找不到键,GetValueByKeyInt将崩溃(然后值为null)