原来可以通过key直接删除实体了
2010 10 27 10:14 PM 1508次查看
分类:Google App Engine 标签:Google App Engine, Python
今天突发奇想,觉得db.delete()应该可以接受key做参数,于是看了下源码,发现果然是可行的,而且传实体给它也会被自动转换成key,那么直接传key自然效率更高。
接下来写了个例子测试了一下:
from time import time
from google.appengine.ext import db
class B(db.Model):
pass
keys = [db.Key.from_path('B', i) for i in xrange(1, 101)]
bs = [B(key=key) for key in keys]
db.put(bs)
t = time()
bs2 = db.get(keys)
t2 = time()
db.delete(bs2)
t3 = time()
db.put(bs)
t4 = time()
db.delete(keys)
t5 = time()
print t2 - t
print t3 - t2
print t3 - t
print t5 - t4
由于网络波动太大,结果没有多少可比较性,于是我只好查看后台记录。发现先get再delete用了7910 cpu_ms和7750 api_cpu_ms,而直接delete key只用了7016 cpu_ms和6917 api_cpu_ms。其实知道GAE服务调用机制的话就会明白,2种方法删除实体发出的request是完全一样的,所不同的是前者多了一次get的request,自然会更慢。
0条评论 你不来一发么↓