c# 字符串性能 - 比较字符串文本或字符串长度哪个更快

标签 c# .net performance string

我必须读取一个巨大的 xml 文件,其中包含超过 300 万条记录和超过 1000 万个嵌套元素。

当然,我正在使用 xmltextreader,并且使用多种优化技巧和提示将我的解析时间从早先的 90 秒减少到大约 40 秒。

但我想尽可能地进一步节省处理时间,因此下面是问题。

相当多的元素是 xs:boolean 类型,数据提供者总是将值表示为“true”或“false”——永远不会是“1”或“0”。

对于这种情况,我最早的代码是:

if (xmlTextReader.Value == "true")
{
    bool subtitled = true;
}

我进一步优化为:

if (string.Equals(xmlTextReader.Value, "true", StringComparison.OrdinalIgnoreCase))
{
    bool subtitled = true;
}

我想知道下面是否最快(因为它不是“真”就是“假”)?

if (xtr.value.length == 4)
{
    bool subtitled = true;
}

最佳答案

是的,它更快,因为你只比较一个值,即字符串的长度。

通过相互比较两个字符串,您可以比较每个字符,只要两个字符相同即可。因此,如果您要找到字符串 "true" 的匹配项,您将在谓词求值为 true 之前进行 4 次比较。

此解决方案的唯一问题是,如果有一天值将从 true 变为 1,您将遇到这里有个问题。

关于c# 字符串性能 - 比较字符串文本或字符串长度哪个更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3652036/

相关文章:

c# - TryTake 与 GetConsumingEnumerable

c# - Json.Net 将复杂查询字符串转换为 JsonString

c# - 哪个更适合获取程序集位置,GetAssembly().Location 或 GetExecutingAssembly().Location

c# - 如何使用 .NET 在 Windows 窗体中显示 Windows 文件夹内容?

python - SQLAlchemy:使用 ORM 扫描大表?

performance - 从堆栈中弹出不需要的值,或者在 386+ CPU 上向 SP 添加一个立即常量是否更快?

c# - 我应该在 WPF 中的哪个页面声明带有自定义控件的绑定(bind)选项

.net - T[] 和 List<T> 在内存方面的内部差异是什么?

.net - 如何将 PDFSharp 对象保存到多个文件?

mysql - 用于在子查询中求和的备用 mysql 查询