c# - C# 中更快的字符串比较

标签 c# string performance

我有一个比较两个文件的程序。我运行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/

相关文章:

c# - 如何将我的控制台应用程序 dll 放入逻辑应用程序调度程序而不是 Web 作业中?

c# - AuthenticationResult.IsSuccessful 开始为 google 返回 false

java - 我如何访问随机 string.xml

apache-flex - Flex DataGridColumn 显示多行字符串数据

performance - 从 Windows Server 2003 迁移到 2008(IIS 6 到 IIS 7)时性能显着下降

c# - C# 运行时导入失败中的 C++ 非托管 DLL

c# - MVVM 从其他 ViewModel 在 ViewModel 上执行命令

javascript - 如何在 jQuery 中向以主题标签开头的单词添加类?

java开关性能优化

c - 两种不同的交换功能之间有什么区别?