6

在分析我的 python2.7 App Engine 应用程序时,我发现将从 ndb 获取的记录反序列化为 python 对象平均需要 7 毫秒。(在pb_to_query_result及其pb_to_entity后代中——这不包括查询数据库和接收原始记录的 RPC 时间。)

这是预期的吗?我的模型有六个属性,其中一个是LocalStructuredProperty具有 15 个属性的,其中还包括一个重复的StructuredProperty的四个属性,但我认为平均对象应该有少于 30 个属性。

预计会这么慢吗?我想获取几千条记录来做一些简单的聚合分析,虽然我可以容忍一定的延迟,但超过 10 秒是个问题。我可以做些什么来重组我的模型或架构以使其更可行?(除了定期预先计算我的聚合分析并缓存结果的明显解决方案。)

如果它这么慢是不寻常的,那么知道这一点会很有帮助,这样我就可以去寻找我可能正在做的事情会损害它。

4

1 回答 1

7

简短的回答:是的。

我发现 Python 中的反序列化非常慢,尤其是在涉及重复属性的情况下。显然,GAE-Python 反序列化创建了大量对象。众所周知,它效率低下,但显然,没有人愿意碰它,因为它离堆栈太远了。

很不幸。由于这种开销(即更快的 CPU == 更快的反序列化),我们大部分时间都运行 F4 前端。

于 2013-08-16T19:46:30.370 回答