我有一个比较两个文件的程序。我运行visual studio分析,发现我的比较时间很大。有没有比这更快的方法来比较两个字符串? (我不能使用并行 foreach,因为它可能会导致错误。)现在我正在使用并发字典,但我对其他选项持开放态度。 :)
var metapath = new ConcurrentDictionary<string, string>();
foreach(var me in metapath)
{
if (line.StartsWith(me.Key.ToString()))
{...}
}
最佳答案
首先,从 me.Key.ToString()
中删除 ToString()
。
接下来,使用序号字符串比较(前提是这不影响正确性):
line.StartsWith(me.Key, StringComparison.Ordinal);
这是有益的,因为标准字符串比较遵循各种 Unicode 规则关于什么是相等的。例如,规范化和非规范化序列必须被视为相等。 Ordinal
只是比较原始字符数据,忽略 Unicode 相等性规则。关于此 here 有更多详细信息,例如,或 here (它声称它更快但没有引用任何数字)。
最后,剖析代码。你会感到惊讶,但大多数时候,缓慢的部分根本不是你想象的那样。例如,它可能是您向字典中添加内容的部分。
关于c# - C# 中更快的字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9846980/