解析字节数组的最快方法?

时间:2018-09-19 18:07:19

标签: c# .net

我目前正在尝试解析XML字符串以获取各种数据点。我下面的代码可以正常工作,但是却占用了大量CPU资源,因此无论如何我都希望对其进行优化。

public static List<Purchase> ParsePurchases(Profile profile, byte[] data)
{
    // Parse the profile XML and extract purchases
    using (var ms = new MemoryStream(data))
    {
        using (var reader = new StreamReader(ms, Encoding.UTF8))
        {
            // read the data into a string
            var xmlString = reader.ReadToEnd();

            // create the DOM over it
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xmlString);

            var purchaseElements = doc.GetElementsByTagName("purchase");
            List<Purchase> purchases = new List<Purchase>();
            for(var e = 0; e < purchaseElements.Count; e++)
            {
                var ele = (XmlElement)purchaseElements[e];
                    purchases.Add(
                     new Purchase(
                        profile,
                        Int32.Parse(ele.GetAttribute("id")),
                        Int32.Parse(((XmlElement)ele.GetElementsByTagName("price")[0]).InnerText),
                        Int32.Parse(((XmlElement)ele.GetElementsByTagName("quantity")[0]).InnerText),
                        ((XmlElement)ele.GetElementsByTagName("description")[0]).InnerText
                        ));


            }

            return purchases;
        }
    }
}

我的LoadXml调用消耗了最多的CPU使用率,大约为44%,而我的ReadToEnd调用消耗了另外22%。关于如何优化这一点的任何想法?

0 个答案:

没有答案