我正在使用highcharts插件来呈现一些图形。分析与IE10(/ IE9)的兼容性我面临一个严重的性能问题。

我的分析是在Windows 10中,在兼容模式下将IE11设置为IE10(或IE9,同样的问题)。可能是由于使用兼容模式+ Windows 10的组合引起的。当用户使用纯IE10或IE9(不在兼容模式下)时,我只想知道是否是相同的问题。我已经在几台机器上进行了测试。在虚拟机上本地运行代码时,我面临与下面的链接相同的问题(已部署)。

我已尽可能地将其剥离。
情况:拥有一组X div容器,在每个容器上附加一个高图。在这种情况下,有15张图表。
问题是:每个图形的运行时间会随着时间增加,从而大大增加了总的运行时间!

示例:[link to example page]。我创建了一个简单的HTML页面,其中包含15个div容器和一个按钮。按钮的OnClick仅触发向每个div容器添加高图表,同时跟踪每个div容器的运行时。另外跟踪总运行时间。将打印所有跟踪的运行时。在加载页面时,也使用jquery($('#btn').trigger("click");)触发按钮的单击

我还在JS fiddle示例中放入了完全相同的代码。使用兼容模式无法重现相同的问题。

有人可以帮我吗?是什么导致此性能泄漏?仅仅是兼容模式的问题,还是在IE10 / IE9中同样如此?



问题示例:在Chrome,FireFox或IE11中运行它,运行平稳大约需要0.2到0.4秒。在以兼容模式设置为IE10或IE9的IE中(使用Windows 10)运行IE时,最初第一次加载页面时初始速度非常快;大约0.6秒(请参阅下文)。请注意,每个图花费大约相同的时间。使用按钮重绘后,就会开始出现性能滞后,使总时间长达15到20秒(每张图最多2秒)。每个图花费更多时间。每次按下该按钮,性能都会变差。

兼容性中的初始负载设置为IE10:

[DrawGraph 0] Execution time: 79
[DrawGraph 1] Execution time: 47
[DrawGraph 2] Execution time: 43
[DrawGraph 3] Execution time: 40
[DrawGraph 4] Execution time: 41
[DrawGraph 5] Execution time: 39
[DrawGraph 6] Execution time: 40
[DrawGraph 7] Execution time: 42
[DrawGraph 8] Execution time: 40
[DrawGraph 9] Execution time: 39
[DrawGraph 10] Execution time: 41
[DrawGraph 11] Execution time: 37
[DrawGraph 12] Execution time: 37
[DrawGraph 13] Execution time: 39
[DrawGraph 14] Execution time: 42
[DrawAllGraphs] Execution time: 654


示例第一个按钮单击:

[DrawGraph 0] Execution time: 321
[DrawGraph 1] Execution time: 474
[DrawGraph 2] Execution time: 541
[DrawGraph 3] Execution time: 758
[DrawGraph 4] Execution time: 926
[DrawGraph 5] Execution time: 1001
[DrawGraph 6] Execution time: 1374
[DrawGraph 7] Execution time: 1384
[DrawGraph 8] Execution time: 1548
[DrawGraph 9] Execution time: 1687
[DrawGraph 10] Execution time: 1857
[DrawGraph 11] Execution time: 2010
[DrawGraph 12] Execution time: 2184
[DrawGraph 13] Execution time: 2275
[DrawGraph 14] Execution time: 2532
[DrawAllGraphs] Execution time: 20896

最佳答案

在IE11上使用开放的开发人员工具运行您的网站,使修复时间增加了两倍以上。您应该检查IE10和IE9,而不是通过IE11进行仿真。

我刚刚测试了IE10 / Win7-每次重绘大约需要500毫秒。

在IE9 / Win7中-您的页面无法使用,JSFiddle演示也无法使用。将您的JS代码放在$(function(){ <here> })-https://jsfiddle.net/9dozuour/8/

该演示在IE9中运行,每次重绘都在大约900毫秒内完成。

关于javascript - 兼容模式下Highcharts性能落后IE10(及更低版本),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39660324/

10-13 08:53