我们有一个用java开发的应用程序,GWT提供了前端。该应用程序用于各种硬件规范,例如也在旧机器上。当然用户抱怨性能。
我们希望收集来自真实用户的分析数据。到目前为止,我们可以测量纯服务器端持续时间(这很容易)和网络往返的持续时间(不是那么容易,但是我们设法了)。
对我们来说,最困难的部分是测量“用户点击搜索按钮”和“显示第一个xxx行网格”之间经过的时间。
有什么想法吗?
由于 霍尔格
答案 0 :(得分:2)
我会在页面加载开始时创建时间戳,最后创建时间戳。我相信“开头”将是“onModuleLoad”,结尾将是在你添加最后一个元素/小部件之后。我希望我已经给你一个很好的想法,从哪里开始。您可以使用移动这些时间戳来缩小您获得的时差。一旦您确信自己获得了渲染时间,就可以节省数据库中的时差,这样每当有人使用您的页面时,您都可以获得更多的用户数据。
答案 1 :(得分:0)
尝试使用SpeedTracer,这是谷歌自己开发的谷歌浏览器插件
答案 2 :(得分:0)
据我所知,目前还没有全栈解决方案。你可以在内部构建的是远程日志记录,gwt轻量级测量和延迟绑定魔法的组合。
第一部分是要了解所有RPC事件和初始化序列已经被测量以及如何插入其中:http://code.google.com/webtoolkit/doc/latest/DevGuideLightweightMetrics.html
第二部分是添加延迟绑定魔法来测量应用程序回调的onSuccess()方法执行时间。灵感(但不是解决方案)可以在这里找到:http://josephmarques.wordpress.com/2010/11/29/performance-monitoring-using-gwt/
最后一部分是交付给客户。在这里,您可以使用gwt-log或新gwt日志记录的可能性。不确定他们是否在JDK日志记录中实现了这一点。
我正在考虑今天创建一个可嵌入的开源库,因为我们最近解决了完全相同的问题并将其移植到GWT 2.0中:)
但我想从构思到实施需要一些时间......
希望它有所帮助。
梅德
答案 3 :(得分:-1)
您可以使用GWT客户端上可用的持续时间类。 com.google.gwt.core.client.Duration
这是一个实用程序类,用于测量客户端的经过时间。
用法示例:
Duration duration = new Duration();
doSomething(); //Returns the number of milliseconds that have elapsed since this object was created.
GWT.log("time taken for doSomething() to complete: "+duration.elapsedMillis());