如何分析 Objectify 的性能?

How to analyze performance of Objectify?

Objectify 是 Google 的 API/service,用于将 Java 对象存储在 Google 数据存储中。起初,我的操作曾经很快(低几十毫秒)。现在,它们变慢了(400-600 毫秒)。

Objectify 也将一个操作变成了多个操作,例如查询在索引中查找实体 ID,然后从内存缓存中检索一些实体,从数据存储中检索其他实体。字段上有注释会影响创建的操作数。有很多地方可能会出现性能问题。

我如何才能深入了解 Objectify 实际上做了哪些工作来提高性能和减少账单(通过触发更少但更有效的操作)?

我查看了 Objectify 文档并广泛搜索了网络。我一直没能找到诊断 Objectify 查询的方法。

查看 GAE RPC 调用的堆栈驱动程序分析,了解幕后情况。它会给你一个原始操作的列表。

确实没有那么多不明显的地方会导致性能出错。混合查询(将查询转换为仅键查询,然后进行批量获取)仅适用于 @Cache 个实体。理念很简单——如果缓存实体是有效的,那么尽可能多地使用缓存可能是有效的。如果您不确定,请删除 @Cache.

除此之外,Objectify 只是将低级 Entity 对象转换为 POJO。它在这方面相当有效,但您当然可以构建病态案例。注意长而昂贵的生命周期方法(@OnLoad 和朋友)。列表列表的嵌套列表等可以轻松创建 O(N^3) 操作。但是当你创建它们时,这些应该是显而易见的。特别是如果您在 Ref<?> 对象上使用 @Load。负载不是免费的。