我有一个复杂的案例:我有三个XML文件,我需要同时读取并根据匹配获取结果。下面是一个工作(但是假的)例子,与我正在做的几乎相似。如何以高效的方式同时读取两个XML文件
例如,我有两个xml文件,两者在标签和属性方面相似,但内容(语言)不同。我在读这两种语言在同一时间,就像在C#文件中的代码:
XElement x1 = XElement.Load (@"abc.xml");
XElement x2 = XElement.Load (@"xyz.xml");
var ch = from var1 in x1.Elements("language1")
where var1.Attribute("index").Value == "1"
from var2 in x2.Elements("language2")
where var2.Attribute("index").Value == var1.Attribute("index").Value
select dictChapter as new
{
sentenceNumber = var1.Attribute("index").Value,
SentenceInLanguage1 = var1.Attribute("text").Value,
SentenceInLanguage2 = var2.Attribute("text").Value,
};
ListBox.DataContext = ch;
的这里的问题是,X1包含1000句等X2。上面的逻辑工作像嵌套循环一样,这会减慢处理速度。它的工作原理就像
x1.1 -> x2.1:1000
x1.2 -> x2.1:1000
或
for i in x1
for j in x2
有选择从X1和X2,其中X1的句子ID等于x2的句子ID句子什么更好的和有效的方式?
你有没有调试或分析这看到重处理发生的地方?如果更重的处理来自将文件数据读入内存或进行匹配,可能有利的是知道。 – jlafay 2012-04-17 14:48:22
我不太了解调试工具。但是当我使用简单的调试,但执行下面的语句需要时间'lstBox.DataContext = ch' – wafers 2012-04-17 14:51:34
在同样的笔记中,当我只以一种语言从一个文件读取时,它几乎没有时间,但是当我从两个文件中读取,如上所述,时间呈指数级增长。 – wafers 2012-04-17 14:52:30