googleappengine告诉我优化这个代码。有人知道我能做什么吗?在
def index(request):
user = users.get_current_user()
return base.views.render('XXX.html',
dict(profiles=Profile.gql("").fetch(limit=100), user=user))
稍后在模板中我会:
^{pr2}$其中使用的方法有:
def shortDisplay(self):
return "%s/day; %s/week; %s days" % (self.maxPerDay, self.maxPerWeek, self.days)
def gravatarUrl(self):
email = self.user.email().lower()
default = "..."
gravatar_url = "http://www.gravatar.com/avatar.php?"
gravatar_url += urllib.urlencode({'gravatar_id':hashlib.md5(email).hexdigest(),
'default':default, 'size':"64"})
return gravatar_url
CPU使用率高的原因是每个请求获取100个实体。这里有几个选项:
我想每次对每个项目执行md5散列是相当昂贵的。最好把gravatar邮件散列存储在某处。在
我遇到了一个问题,大量的CPU被用于看似微不足道的工作,结果却不是多次运行的查询。在我的Django模板中,我做到了post.comments.count然后循环通过发表评论. 这导致了两次执行——一次是计数,一次是实体。哎呀!在
我还想说,拿一份Guido的Appstats的副本。这对Python没有帮助,但是查看API调用所花费的时间(以及调用之间的时间——这通常会表明Python的速度较慢)是非常有用的。在
你可以在这里得到图书馆:https://sites.google.com/site/appengineappstats/
我在我的博客上写了一篇关于它的文章(附截图):http://blog.dantup.com/2010/01/profiling-google-app-engine-with-appstats
Appstats http://blog.dantup.com/pi/appstats_4_thumb.png
相关问题 更多 >
编程相关推荐