我对性能有问题,我不知道它来自哪里。
createLogoutURL和第一个数据存储查询之间的差距是巨大的……它位于以下代码段之间:
loginInfo.setLogoutUrl(userService.createLogoutURL(requestUri));
...
ch.zhaw.ams.server.auth.user.User userAms = DatabaseHelper.findByParama(user.getEmail(), "emailAddress",
"String", ch.zhaw.ams.server.auth.user.User.class);

@Override
public GoogleLoginInfo login(String requestUri) {
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
GoogleLoginInfo loginInfo = new GoogleLoginInfo();
if (user != null) {
loginInfo.setLoggedIn(true);
loginInfo.setEmailAddress(user.getEmail());
loginInfo.setNickname(user.getNickname());
loginInfo.setLogoutUrl(userService.createLogoutURL(requestUri));
loginInfo.setIsGoogleLogin(true);
ch.zhaw.ams.server.auth.user.User userAms = DatabaseHelper.findByParama(user.getEmail(), "emailAddress",
"String", ch.zhaw.ams.server.auth.user.User.class);
if (userAms != null) {
loginInfo.setFirstname(userAms.getFirstName());
loginInfo.setLastname(userAms.getLastName());
}
// Set Memcache
try {
SessionCache.setupCache(user.getEmail());
loginInfo.setIsCached(true);
} catch (CacheException e) {
// TODO Auto-generated catch block
e.printStackTrace();
loginInfo.setIsCached(false);
}
} else {
loginInfo.setLoggedIn(false);
loginInfo.setLoginUrl(userService.createLoginURL(requestUri));
}
return loginInfo;
}有人知道为什么它这么慢吗?
发布于 2013-09-22 00:22:46
从好的方面来说,appstats已经为您将其范围缩小到三行:
loginInfo.setLogoutUrl(userService.createLogoutURL(requestUri));
loginInfo.setIsGoogleLogin(true);
ch.zhaw.ams.server.auth.user.User userAms = DatabaseHelper.findByParama(user.getEmail(), "emailAddress",
"String", ch.zhaw.ams.server.auth.user.User.class)您可能会尝试找出哪一条线路导致延迟。我最好的猜测是,这是您第一次加载ch.zhaw.ams.server.auth.user.User.class类。此类可能会导致加载其他类。您看到的长延迟可能只是类加载时间。
您也许能够添加一个启动处理程序来加载其中的一些类,因此希望它只出现得很少,但是您会在GAE上看到很多关于Java类加载时间的抱怨。这不是一个可以在GAE上完全解决的问题。
https://stackoverflow.com/questions/18782264
复制相似问题