在GAE中更高效地存储无需索引的数组

标签:Google App Engine, Python, 性能

今天在GAE论坛看到有人说ListProperty太慢了,即使加上indexed=False也非常慢,而用pickle技术保存成Blob类型就会快10倍。

对于这点,Nick Johnson提到了《Store arrays of numeric values efficiently in the datastore》这篇文章。
他的解释是ListProperty会将其中的每个元素编码成一个独立的属性,并多次对其进行序列化,所以会造成很大的开销。
而pickle虽然可以让其只保存成一个元素,但兼容性可能并不好,也不是特别高效。

对于整数、浮点数和字符类型的数组,用array来代替list会更高效(当然底层也是保存为Blob类型)。
经提问者测试,ArrayProperty的速度更快并且占据的空间只有pickle的1/4。

0条评论 你不来一发么↓

    想说点什么呢?