使用自己的xml解析器和system.xml命名空间之间的性能差异是多少

Fla*_*amy 1 c# xml optimization game-engine xml-parsing

我正在尝试为我的游戏编写一个xml解析器,因为在使用system.xml命名空间时,最终构建的大小会增加1+ mb .解析器类是一个单例,可以随时在游戏中访问.虽然我要处理的数据量并不多,但我仍然担心性能(因为它是游戏,我不能牺牲任何性能).

有没有办法有效地处理解析.顺便说一句,我正在使用c#,如果有一个名为的标签<tag>,我只是将字符串分解成片段搜索<tag></tag>.这将以递归方式继续,直到整个字符串完全分解为止.结果将保存在我创建的锯齿状列表类中.

有什么方法,我可以改进我的方法或我应该使用System.XML名称空间.

另外注意:xml数据来自服务器而不是来自本地文件.

Kob*_*obi 5

一些注意事项(这应该是评论,但是太长了):

  1. 我无法重现你的问题.使用控制台应用程序,我添加了一个引用System.Xml,创建XmlDocument,使用它和编译,并没有看到任何有意义的增加大小.
  2. System.Xml是.Net基类库的一部分.通常,您可以指望它在运行.Net的每台机器上(例如,根据msdn,XmlDocument在XNA中可用,但在便携式类库中不可用).
  3. 如果它是框架的一部分,请确保未在引用上设置Copy Local = True.默认值应为false,但如果为true,则会将900 KB DLL复制到目标文件夹.
  4. 没人能回答哪个更快 - 答案是非常相对的 - 什么类型的XML(小?大?)?什么类型的机器?您的用户将使用这些XML执行哪些操作?只有您可以通过分析代码来回答这些问题.
  5. 即使你发现XmlDocument很慢或太大,也有无数的.Net 解析器 - 也许其中一个对你有好处.(甚至.Net有XDocument,但它也需要System.Xml.dll,所以没有增益)
  6. 通常,多个字符串操作很慢.如果你描述的方法是不断搜索和分割sting,那听起来很慢 - 我怀疑你需要不止一次扫描字符串来解析XML.