2016-09-23 11 views
0

ハイチャートのプラグインを使用してグラフを表示しています。 IE10(/ IE9)との互換性の分析私は重大なパフォーマンス上の問題に直面しています。Highcharts performance lag互換モードのIE10(以下)

私の分析は、IE10(またはIE9、同じ問題)に設定された互換モードでIE11を使用するWindows 10で行われます。それは、互換モード+ウィンドウ10の組み合わせによって引き起こされる可能性があります。ユーザーがプレーンIE10またはIE9(互換性モードではない)を使用しているときに、同じ問題かどうかを知りたいだけです。私はいくつかのマシンでそれをテストしました。私は下のリンク(デプロイ)と同じ問題に直面していますが、仮想マシン上でコードをローカルに実行しています。

私はできるだけそれを取り除いた。 状況:X個のdivコンテナのセットを持ち、それぞれにハイチャートを付けます。この場合、15のグラフ。 問題:時間あたりのランタイムは、になり、ランタイムが大幅に増加します。

例:[link to example page]。私は単純なhtmlページを作成しました.15のdivコンテナとボタンがあります。ボタンのOnClickは、各divコンテナにハイチャートを追加するだけで、divコンテナごとにランタイムを追跡します。合計ランタイムを追跡します。すべての追跡ランタイムが印刷されます。ページをロードする際に、jquery($('#btn').trigger("click");)を使用して、ボタンをクリックしてもトリガーされます。

JS fiddleの例でも同じコードを使用します。互換モードを使用して同じ問題を再現することはできません。

誰かが私を助けることができますか?このパフォーマンスリークの原因は何ですか?互換モードの問題か、それともIE10/IE9でも悪いですか?


問題例は:クロム、FirefoxやIE11でそれを実行して、それは約0.2〜0.4秒を取るスムーズ。 IE10またはIE9(Windows 10を使用)に設定された互換モードでIEで実行している間は、初めてページを読み込んでいる間はかなり高速です。約0.6秒(以下を参照)。各グラフにはほぼ同じ時間がかかります。ボタンを使用して再描画を実行すると、パフォーマンスラグの構築が開始され、合計時間は最大15〜20秒(グラフあたり2秒以上)になります。各グラフには時間がかかります。ボタンを押すたびに、パフォーマンスが悪化します。 IE10に設定互換性で

Intial負荷:

[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 

答えて

1

倍以上の時間をrenering IE11増加にオープン開発ツールであなたのウェブサイトを実行します。 IE11でエミュレートするのではなく、IE10とIE9をチェックする必要があります。

私はちょうどIE10/Win7をテストしました - それぞれの再描画は約500msかかります。

IE9/Win7では、ページが機能せず、JSFiddleデモも実行されません。あなたにJSコードを入れてください$(function(){ <here> }) - https://jsfiddle.net/9dozuour/8/

このデモはIE9で実行され、各再描画は約900msで実行されます。

+0

素晴らしい!私はすでにエミュレーションモードでIE11でレンダリングしたことが原因であると、少なくとも推測していました。お疲れ様でした!質問:JQuery関数の内部にコードを置くことについて。この種のコード(ハイチャートを引き起こす)が通常のjavascript関数の中にうまくいけばうまくいくと思いますか? (もちろん、これは単なる抽出例です) – FBE

+0

@FBE DOMがロードされていることを確認する必要があります。 jQueryを使用したくない場合は、まずJSファイルをロードしてからJSコードをロードしてください。 [別のオプションは、jqueryなしでドキュメント対応の同等物を使用することです。](http://stackoverflow.com/questions/799981/document-ready-equivalent-without-jquery) –

関連する問題