【发布时间】:2011-06-11 06:48:48
【问题描述】:
看了“Google IO 2009: Building scalable, complex apps on App Engine”之后,我做了一些测试来帮助理解对列表反序列化的影响,但结果相当令人惊讶。以下是测试说明。
- 所有测试都在 GAE 服务器上运行。
- 每个测试执行 5 次,并记录其时间和 CPU 使用率。
- 这个测试是比较 Columns V.S List 中获取(浮动)数据的速度
- Column 和 List 表都包含一个额外的 datetime 列用于查询。
- 使用相同的查询来获取 Column 表和 List 表上的数据。
测试 1
- 获取单行
- 表格大小:500 列 vs 500 列(均包含 500 行)
表:ChartTestDbRdFt500C500R
OneRowCol 结果
[0] 0.02 (52)
[1] 0.02 (60)
[2] 0.02 (56)
[3] 0.01 (46)
[4] 0.02 (57)
表:ChartTestDbRdFt500L500R
OneRowLst 结果
[0] 0.01 (40)
[1] 0.02 (38)
[2] 0.01 (42)
[3] 0.05 (154)
[4] 0.01 (41)
测试 2
- 获取所有行
- 表格大小:500 列 vs 500 列(均包含 500 行)
表:ChartTestDbRdFt500C500R
AllRowCol 结果
[0] 11.54 (32753)
[1] 10.99 (31140)
[2] 11.07 (31245)
[3] 11.55 (37177)
[4] 10.96 (34300)
表:ChartTestDbRdFt500L500R
AllRowLst 结果
[0] 7.46 (20872)
[1] 7.02 (19632)
[2] 6.8 (18967)
[3] 6.33 (17709)
[4] 6.81 (19006)
测试 3
- 获取单行
- 表格大小:4500 列 vs 4500 列(均包含 10 行)
表:ChartTestDbRdFt4500C10R
OneRowCol 结果
[0] 0.15 (419)
[1] 0.15 (433)
[2] 0.15 (415)
[3] 0.23 (619)
[4] 0.14 (415)
表:ChartTestDbRdFt4500L10R
OneRowLst 结果
[0] 0.08 (212)
[1] 0.16 (476)
[2] 0.07 (215)
[3] 0.09 (242)
[4] 0.08 (217)
结论
获取 N 个项目的列表实际上比 N 列更快。有谁知道为什么会这样?我认为列表反序列化会影响性能?还是我的测试不正确?任何见解都会有所帮助,谢谢!
【问题讨论】:
标签: performance list google-cloud-datastore deserialization