【发布时间】:2025-12-09 19:40:01
【问题描述】:
/* 编辑:请注意,此代码是一个示例,我的问题通常与(C#)编码有关,因为我经常发现自己遇到循环某些内容的情况,并且根本不需要检查 if 语句一点也不。 */
我怀疑这是否可能,但我想确定。
我有一个任务,我必须读取文件并使用变量。 这些项目在 txt 文件中的一行中,以逗号分隔。我得到的文件中的项目被 \t 隔开,有时还有空格。 一个例子:“\t Boeing 737-800”(注意两个空格)
这是我为摆脱制表符(和空格)而制作的功能:
private string RemoveTab (string text)
{
string tempText = "";
foreach (char c in text)
{
if (c == ' ' && tempText == "")
{
//nothing has to be done
}
else if (c != '\t')
{
tempText += c;
}
}
return tempText;
}
现在回到真正的问题: 一旦所有的制表符和空格都被跳过,它就不需要再检查任何东西了。尤其不是第一个 if 语句。有没有办法可以禁用第一个 if 语句?
在这个例子中,我怀疑它会对性能产生任何重大影响。好吧,我知道它没有。但由于我的 i5-4570 在玩《守望先锋》和《战地风云 4》等游戏时遇到问题,我想让事情变得尽可能高效。而且我认为在不可能满足要求的情况下检查很多东西可能会对 CPU 密集型应用程序的 CPU 使用率产生一些影响。
【问题讨论】:
-
当你知道你已经完成了所有的工作后,为什么不直接回来呢?诚然,您不应该建立这样的字符串(使用
StringBuilder),您可能会发现TrimStart可以满足您的需求... -
感谢您在这种情况下的建议!我将研究 StringBuilder 的事情以及如何使用它。但这并不能回答我的问题:)
-
你无法通过猜测瓶颈在哪里获得良好的性能,也无法通过学习数十亿条“永远做 X”的规则。您设定绩效目标。你编写清晰易懂的代码。然后,您衡量性能并如果它没有达到目标,您确定瓶颈并开始评估那些地方的替代方案。
-
大部分情况下,我同意你的看法。类比:如果你投票给选举,你就是数百万人中的一员。但归根结底,所有这些单身人士加起来是一笔巨款。如果我可以通过直接编写高效的代码来防止进行大量检查,那么我以后就不必通过代码来搜索可以节省一点性能的地方。这也是我非常感谢 Jon Skeet 的建议的原因。但是还有很多其他情况,我会通过数组而不是字符串 :)
标签: c# performance visual-studio-2015