| 作者 | GAE Datastore性能测试(2): 写操作 |
|
Chris1919 2009-03-21 14:00 |
前面已经对datastore读操作进行过性能测试。今天又测试了下datastore写操作性能。
测试1: 测试的代码也很简单,主要一行代码: TagInfo.get_or_insert(key_name = tag, name = tag)TagInfo的定义在这里。这里tag是从url中直接取过来的。get_or_insert是Model的方法,包含transaction。结果再次让我大跌眼镜,这句代码耗时744ms-cpu。 测试2: 我把transaction去掉,测试代码是: tag_info = TagInfo(key_name = tag, name = tag) tag_info.put()依然要耗时715ms-cpu。 测试3: 继续测了下批量更新数据,测试代码是: items = range(0,10) for item in items: tag = 'TAG_' + str(item) tag_info = TagInfo(key_name = tag, name = tag) tag_info.put()耗时5928ms-cpu。 测试4: 换一个方法批量更新数据,测试代码是: items = range(10,20) tag_infos = [] for item in items: tag = 'TAG_' + str(item) tag_info = TagInfo(key_name = tag, name = tag) tag_infos.append(tag_info) db.put(tag_infos)耗时5809ms-cpu。 综上观察下来,数据写操作非常耗时,虽然我觉得读操作效率已经够差了,但写操作的效率还要差一个数量级。纵然GAE为了快速查询做了大量的index,但这种效率的话,一个request能做的数据更新有限,这个对应用的局限性很大。 |