Версия1
class ActionLog(db.Model):
action = db.StringProperty()
time_slice = db.IntegerProperty()
trace_code = db.StringProperty() # which profile this log belong to
# Who
facebook_id = db.StringProperty() # the user's facebook id
ip = db.StringProperty() # the user's ip address
# When
time = db.DateTimeProperty(auto_now_add=True) # the time of this event
# What
url = db.StringProperty() # the imgurl
secret = db.StringProperty() # the secret of imgurl instance
tag = db.StringProperty() # the tag
referurl = db.StringProperty() # the tag's link
# Where
weburl = db.StringProperty() # the user's refer url
domain = db.StringProperty() # the refer url's domain
BSP = db.StringProperty() # the refer url's BSP
#execute
log = ActionLog(action=action,
trace_code=trace_code,
facebook_id=facebook_id,
ip=ip,
time_slice=time_slice,
url=url,
secret=secret,
tag=tag,
referurl=referurl,
weburl=weburl,
domain=domain,
BSP=BSP)
db.put(log)
Версия 2
class ActionLog(db.Model):
trace_code = db.StringProperty()
url = db.StringProperty()
secret = db.StringProperty()
# use a dict like text property to store all implicit properties.
desp = MyDictProperty()
time = db.DateTimeProperty(auto_now_add=True) # the time of this event
#execute
log = ActionLog(
secret = secret,
url = url,
trace_code = trace_code,
desp = {
'action':action,
'facebook_id':facebook_id,
'ip':ip,
'tag':tag,
'referurl':referurl,
'weburl':weburl,
}
)
db.put(log)
Эти две версии кода в основном выполняют одну и ту же задачу, однако код версии 1 будет использовать более 800 мсек для выполнения простоговключите операцию (желтый или красный свет) процессорного времени на Google App Engine.В контракте код версии 2 использует только около 300 мс.(Оба теста в хранилище данных HRD)
В хранилище данных M / S код версии 1 будет использовать около 400 мс, а код версии 2 - около 150 мс.
Я могу представить, что версия 1 будетбыть медленнее по сравнению с версией 2, так как он использует больше индекса ключа.Однако трудно поверить, что разница такая огромная.Также удивительно, что движок приложений Google не может справиться с такой простой задачей.
Означает ли это, что мы не можем ожидать, что GAE выполнит вставку данных с более чем 10 свойствами, или я что-то неправильно понимаю?
thx