【问题标题】:Windows Phone HttpClient GetAsync performanceWindows Phone HttpClient GetAsync 性能
【发布时间】:2015-05-08 10:21:53
【问题描述】:

我正在 Windows Phone 平台上使用用于教育目的的 twitch REST API(MVVM 模式)。我在使用 HttpClient 时注意到了纯粹的性能:

  1. 我得到了 10 个元素的集合
  2. 将其传递给 CheckCannelStreamStatus

我删除了代码,因为它是原型草稿。

就像下面的答案一样,问题出在HttpClient.GetAsync,导致执行时间约为 671 毫秒。

【问题讨论】:

  • 为什么不对这两种方法重复使用相同的HttpClient
  • 我为什么要这样做?它是可以从任何地方调用的独立方法。
  • 我认为“7686ms 执行时间”的主要原因是网络传输和服务器执行
  • 因为这样可以更有效率。然后将其作为参数拉出来。请参阅stackoverflow.com/a/22561368/682105stackoverflow.com/a/15708633/682105

标签: c# windows-phone-8.1 json.net asp.net-web-api2


【解决方案1】:

这与HttpClient的“性能”无关。这样做的原因是您要访问服务器 10 次以获取一些信息。每个请求大约需要 768 毫秒,考虑到一些延迟,这听起来很合理。 HttpClient 在延迟和服务器响应时间方面几乎无能为力。

为了验证是不是这样,我建议你弹出 Fiddler 或类似的工具,以确保响应时间是违规者。您还可以将 client.GetAsyncresponse.Content.ReadAsAsync<TwitchStream>() 包装在单独的秒表中,并验证序列化不是这里的根本原因。

为了减少获取所有所需信息所需的时间,我建议您考虑并行执行 HTTP 请求。 HttpClient 被设计为既可用于多次调用,也可跨多个线程重用。因此,重用单个实例并并行执行多个请求,使用 Task.WhenAll 或类似的东西,会使其性能更好。

【讨论】:

  • 是的,你完全正确。我会寻找你提供的链接。谢谢。
猜你喜欢
  • 2016-04-20
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多