鼠标事件运行得非常慢

时间:2014-07-03 17:43:28

标签: jquery performance angularjs mouseevent hammer.js

我们有一个带有UI路由器的Angular.js应用程序。在任何现代浏览器上,我们的应用都非常快。然而,在我们的一个目标设备上,视图变化太慢了(主要是因为它目前正在执行JS - 这是我们正在修复的一个副问题)。

我们看到的主要问题是我们有一个鼠标事件,通过$ location.path更改启动视图更改,并且它在250ms - 400ms运行。

screen cap of offending mouse event

我们已经尝试了很多东西,例如放弃我们用来调用代码的Hammer事件,剥离应用程序以便只加载空白视图,删除我们拥有的所有XHR调用,删除DOM操作,以及其他一些小实验。

调用的jQuery事件是jQuery.event.add(特别是jQuery 1.11.1的第4305行)。

我们希望有人遇到类似的问题并且可以帮助诊断会导致过多的删除计时器事件,GC事件,解析HTML,请求动画帧,安装计时器和重新计算样式的内容。它们中的每一个看起来都是微秒或至多<1。 2毫秒,累计总数远不及我们所看到的数百毫秒。

1 个答案:

答案 0 :(得分:0)

问题是,我提到的目标设备在我们的开发机器上运行的JavaScript比Chrome慢40倍,比我们的其他设备慢20倍。我们刚刚运行SunSpder来确定速度。

JS Engines的缓慢实际上只会加剧这个问题。我们仍然需要做一些优化来清理: - 剥去绑定到ng-repeat的对象 - 将bindonce与refresh-on放在一起(我们已经有很多bo文本,我们只需要刷新的能力)

现在,应用程序的延迟时间要短得多。

确定,抱歉没有发布代码,并感谢您的回复。要解开我们需要提供清晰画面的东西将是太多的工作。