我有一个比较两个文件的程序.我运行了visual studio分析,发现我的比较时间很长.比较这两个字符串有更快的方法吗?(我不能使用并行foreach,因为它可能会导致错误.)现在我正在使用并发字典,但我对其他选项持开放态度.:)
var metapath = new ConcurrentDictionary<string, string>();
foreach(var me in metapath)
{
if (line.StartsWith(me.Key.ToString()))
{...}
}
Run Code Online (Sandbox Code Playgroud)
首先,掉落ToString()的me.Key.ToString().
接下来,使用序数字符串比较(假设这不影响正确性):
line.StartsWith(me.Key, StringComparison.Ordinal);
Run Code Online (Sandbox Code Playgroud)
这是有益的,因为标准字符串比较遵循各种相同的Unicode规则.例如,标准化和非标准化序列必须被视为相等.Ordinal只是比较原始字符数据,忽略Unicode相等规则.有这方面的更多细节在这里,例如,或在这里(号称它的速度更快,但没有任何引用的数字).
最后,描述代码.你会感到惊讶,但大多数时候,缓慢的部分完全不是你想象的那样.例如,它可能是您向字典添加内容的部分.
| 归档时间: |
|
| 查看次数: |
343 次 |
| 最近记录: |