为简单的XML文件更换器使用太多内存

时间:2017-06-28 12:21:41

标签: c# .net xml memory

我在C#中编写了一个XML更换器,它比较了2个XML文件的值并使它们相等。我是以一种非常懒惰的方式完成的,因为我不知道文件之间会有什么样的差异。

以下是代码:

    public static void ChangeNode(XDocument xdocument1, XDocument xdocument2, XElement bigNode1, XElement bigNode2)
    {
        if(bigNode1.Elements().ToList().Count < bigNode2.Elements().ToList().Count)
        {
            bigNode1.AddBeforeSelf(bigNode2);
            bigNode1.Remove();
            IsEqual = false;
        }
        else
        {
            if(bigNode1.Value != bigNode2.Value)
            {
                bigNode1.AddBeforeSelf(bigNode2);
                bigNode1.Remove();
                IsEqual = false;
            }
        }

        if(!IsEqual)
        { 
            xdocument1.Save(CoreForm.File1, SaveOptions.DisableFormatting);
            xdocument2.Save(CoreForm.File2, SaveOptions.DisableFormatting);
        }
    }

将25MB文件更改为125MB文件时,如何才能使用近3GB的内存?它与我更改第一个文件的方式有关吗?

1 个答案:

答案 0 :(得分:2)

无法看到你在这个方面做得怎么样可能会导致3gb的ram被使用。
但对于非常大的xml文件,不建议使用XDocument将其全部加载到内存中,而是使用XmlReader并以块的形式读取它。 另外this是关于提高xml性能的非常好的文章。