我必须读取一个巨大的 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/