Windows Phone HttpClient GetAsync 性能
Windows Phone HttpClient GetAsync performance
我正在 Windows Phone 平台上出于教育目的(MVVM 模式)使用 twitch REST API。我在使用 HttpClient 时注意到纯粹的性能:
- 我得到了 10 个元素的集合
- 将其传递给 CheckCannelStreamStatus
我删除了代码,因为它是原型的草稿。
就像下面的答案一样,问题出在 HttpClient.GetAsync
中,导致执行时间约为 671 毫秒。
这与HttpClient
的"performance"无关。这样做的原因是您要去服务器 10 次以取回一些信息。每个请求大约需要 768 毫秒,考虑到一些延迟,这听起来很合理。 HttpClient
对延迟和服务器响应时间无能为力。
为了验证这种情况,我建议你弹出 Fiddler 或类似的工具来确保响应时间是罪魁祸首。您还可以将 client.GetAsync
和 response.Content.ReadAsAsync<TwitchStream>()
包装在单独的秒表中,并验证序列化不是此处的根本原因。
为了减少获取所有所需信息所需的时间,我建议您考虑并行执行 HTTP 请求。 HttpClient
旨在为多个调用和跨多个线程重复使用。因此,重用单个实例并并行执行多个请求,使用类似 Task.WhenAll
或类似的东西,将使它的性能更好。
我正在 Windows Phone 平台上出于教育目的(MVVM 模式)使用 twitch REST API。我在使用 HttpClient 时注意到纯粹的性能:
- 我得到了 10 个元素的集合
- 将其传递给 CheckCannelStreamStatus
我删除了代码,因为它是原型的草稿。
就像下面的答案一样,问题出在 HttpClient.GetAsync
中,导致执行时间约为 671 毫秒。
这与HttpClient
的"performance"无关。这样做的原因是您要去服务器 10 次以取回一些信息。每个请求大约需要 768 毫秒,考虑到一些延迟,这听起来很合理。 HttpClient
对延迟和服务器响应时间无能为力。
为了验证这种情况,我建议你弹出 Fiddler 或类似的工具来确保响应时间是罪魁祸首。您还可以将 client.GetAsync
和 response.Content.ReadAsAsync<TwitchStream>()
包装在单独的秒表中,并验证序列化不是此处的根本原因。
为了减少获取所有所需信息所需的时间,我建议您考虑并行执行 HTTP 请求。 HttpClient
旨在为多个调用和跨多个线程重复使用。因此,重用单个实例并并行执行多个请求,使用类似 Task.WhenAll
或类似的东西,将使它的性能更好。