c# - XPath 与反序列化 : which one is better in performance for read operations

标签 c# wcf performance serialization xpath

我将小型 (2-10 KB) XML 文档作为输入传递给 WCF 服务。现在我有两个选项可以从传入的 XML 中读取数据值

  1. 反序列化为强类型对象并使用对象属性访问值
  2. 使用 XPath 访问值

哪种方法更快?一些统计数据来支持你的答案会很棒。

最佳答案

我会反序列化它。

如果您使用 xpath,您将反序列化(或“加载”)它到 XmlDocument 或其他东西。所以这两种解决方案都使用时间反序列化。完成此操作后,xpath 将变慢,因为解析该字符串、解析名称、执行函数等所花费的时间。另外,如果你使用 xpath,你就没有类型安全。您的编译器无法为您检查 xpath 语法。

如果您使用 XmlSerializer 和类,您将获得静态类型。真正快速地访问你的数据,如果你想用 xpath 查询它们,仍然有办法做到这一点。

另外,我想说的是,使用类可能会更容易理解您的代码。

唯一的缺点是 xml 必须始终符合相同的模式,但在您的情况下这可能不是真正的问题。

我希望你原谅没有统计数据,我认为没有例子的论据已经足够强大了。如果您想要最终答案,请尝试两种方法并准备好秒表。

关于c# - XPath 与反序列化 : which one is better in performance for read operations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/277710/

相关文章:

c# - 用作参数时无法推断 Action 委托(delegate)的返回类型

C#.Net Core 3.1 System.Text.Json忽略序列化中的空集合

使用 Ninject Dispose 的 WCF 未在 requestscope 中触发

c# - 同一应用内的服务看不到同一 session

c# - VS 2010 是否允许我在 C# 中使用新的 async 和 await 关键字?

c# - Azure应用程序服务: Cannot find the certificate in X509Store(StoreName.我的,StoreLocation.CurrentUser)

wcf - 如何在 VS 2012 中使用 MSBuild 命令行发布我的 WCF 服务库?

performance - 对等点 : socket write error/socket exception: connection reset 重置 Jmeter 连接

asp.net-mvc - ASP.NET MVC 5 Web 应用程序性能下降

wpf - 如何加速WPF程序?