我正在执行一个大型过程,该过程解析XML文件,多次查找某些属性。
当我分析整个过程时,我意识到 for 循环每个循环消耗2MB RAM内存,它为整个过程占用大约3GB RAM,根据我们的目标效率太低。那是代码:
For Each element As XmlElement In xDoc.SelectSingleNode("/disk")
If element.Name = "object" Then
If objectIdentifier = element.GetElementsByTagName("objectIdentifier").Item(0).InnerText Then
XMLObject_fileName = element.GetElementsByTagName("XMLObject_fileName").Item(0).InnerText
Exit For
End If
End If
Next
这是我看到代码使用XmlElement类进行解析的时候。我通常只使用xmlNode类,所以我决定改变它,只是为了测试。当我执行此更改时,进程只会#34;只花了1GB的RAM内存。
这是新代码:
For Each element As XmlNode In xDoc.SelectSingleNode("/disk")
If element.Name = "object" Then
If objectIdentifier = element.SelectNodes("objectIdentifier").Item(0).InnerText Then
XMLObject_fileName = element.SelectNodes("XMLObject_fileName").Item(0).InnerText
Exit For
End If
End If
Next
所以,我的问题是:为什么会出现这种差异?有谁知道这些类如何使用内存?
感谢您的回答。