嘿傢伙我要讀它由超過300萬條記錄和超過1000萬的嵌套元素C#中的字符串性能 - 什麼是更快地比較,字符串文字或字符串長度
自然我使用XmlTextReader的一個巨大的XML文件並採用多種優化技巧和提示
有我的分析時間縮短到40秒左右從早期90秒,但我想,以進一步節省處理時間,盡我所能,因此下面的問題
不少元素類型爲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;
}
你爲什麼不以這兩種方法爲基準並親眼看看? (對於它的價值,我猜測長度比較會更快,但可能並不顯着。) – LukeH 2010-09-06 14:00:48
爲什麼不只是測試它?我不會感到驚訝,如果string.Equals短路無論如何它是測試長度比較。它會檢查第一個參考是否相等,然後是兩個字符串的長度,然後如果長度相同,則執行逐字符測試。只是一個猜測。 – 2010-09-06 14:03:33
@Chris Taylor:'Equals'只爲'Ordinal'和'OrdinalIgnoreCase'做了這個短路。在所有其他中,「\ x00e9」.Equals(「e \ x0301」)「儘管長度不同,但是是正確的。 – Timwi 2010-09-06 14:20:00