使用 OData 时如何加快 Android 版 Restlet 的速度?

发布于 2024-09-25 21:46:20 字数 311 浏览 9 评论 0原文

我正在尝试使用适用于 Android 的 Restlet 来查询 OData 数据源。然而,我对它在模拟器和真实设备上的性能都没有印象。我在包装器 AsyncTask 中发出了请求,以使 UI 做出响应,但最终返回对象仍需要 1 分钟多的时间。

我在 LogCat 窗口中得到了很多这样的内容:

10-04 18:20:41.667: DEBUG/dalvikvm(278): GC freed 7872 objects / 523928 bytes in 279ms

我可以做什么来加快查询速度?

I am attempting to use Restlet for Android to query an OData data source. However, I am not impressed with its performance in both the emulator as well on a real device. I have the requests made in a wrapper AsyncTask to make the UI responsive but it still takes over 1 minute to finally return the objects.

I get plenty of these in the LogCat window:

10-04 18:20:41.667: DEBUG/dalvikvm(278): GC freed 7872 objects / 523928 bytes in 279ms

What can I do to speed up the queries?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

佞臣 2024-10-02 21:46:20

查看 odata4j - http://odata4j.org 这是 Java 的替代 odata 库,包括 Android 兼容的客户端 api 。

我们刚刚在 0.3 版本中发布了一个简单的 Android 客户端示例。此示例演示了解析/分页任意 odata 服务的有效方法。

除了服务驱动的分页(Alex 提到的)之外,我们还使用高效的 xml pull 解析器实现来解析 odata 负载(我们发现堆活动/GC 是 Android 上最大的性能瓶颈)。

Check out odata4j - http://odata4j.org This is an alternative odata library for java, including an android-compatible client api.

We just released a simple android client example in our 0.3 release. This example demonstrates an efficient way of parsing/paging an arbitrary odata service.

Along with service driven paging (mentioned by Alex), we use the efficient xml pull parser implementation to parse the odata payload (we found heap activity/GCs to be the biggest perf bottleneck on android).

我知道这对您提高 RESTlet 库的性能没有帮助...但是:

需要考虑的一件事是使用名为 服务驱动分页
请注意,这与 $top 和 $skip (又名客户端驱动的分页)不同,因为即使客户端不要求,服务器也会进行分页。

当客户端对大型数据集进行未经过滤的查询时,SDP 特别有用。

这样也许您可以将 7872 数字降低到更易于管理的数字。

I know this doesn't help you with the perf of the RESTlet library... but:

One thing to consider is using something called Service Driven Paging.
Note this is distinct from $top and $skip (aka client driven paging), because the server pages even if the client doesn't ask for it.

SDP is particularly useful when a client does an unfiltered query over a large data set.

That way perhaps you can lower that 7872 number to something more manageable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文