2017-06-27 2 views
0

私は多くの計算を行い、Google Chartsオブジェクトに多くの配列の形で結果をプロットするjavascriptを持っています。ページをリロードせずに、新しい値を適用して解析を繰り返し実行し、毎回結果をプロットすることができます。奇妙なことは、これはChromeでうまくいくということですが、MacOSのSafariでは新しい解析が行われるたびに遅くなり、ページをリロードして速度を上げる必要があります。しかし、Chromeのデスクトップとモバイル、およびSafariモバイルでは、リロードを必要とせず、最高速度で動作し続けます。私はSafariのmacOSが何かをキャッシュしていてメモリを満たしていると思われる。私は毎回作成されるグラフオブジェクト(以下のコード)を使用しています(しかしおそらくガベージコレクションも)。なぜSafariデスクトップではJavaScriptが遅くなりますが、ChromeやSafariのモバイルでは遅くなりますか?

 var chart01 = new google.visualization.LineChart(document.getElementById('chart_01')); 
    var chart02 = new google.visualization.LineChart(document.getElementById('chart_02')); 
    var chart03 = new google.visualization.LineChart(document.getElementById('chart_03')); 
    var chart04 = new google.visualization.LineChart(document.getElementById('chart_04')); 
    var chart05 = new google.visualization.LineChart(document.getElementById('chart_05')); 
    var chart06 = new google.visualization.LineChart(document.getElementById('chart_06')); 
    var chart07 = new google.visualization.LineChart(document.getElementById('chart_07')); 
    var chart08 = new google.visualization.LineChart(document.getElementById('chart_08')); 
    var chart09 = new google.visualization.LineChart(document.getElementById('chart_09')); 
    var chart10 = new google.visualization.LineChart(document.getElementById('chart_10')); 
    var chart11 = new google.visualization.LineChart(document.getElementById('chart_11')); 
    var chart12 = new google.visualization.LineChart(document.getElementById('chart_12')); 
    var chart13 = new google.visualization.LineChart(document.getElementById('chart_13')); 
    var chart14 = new google.visualization.LineChart(document.getElementById('chart_14')); 
    var chart15 = new google.visualization.LineChart(document.getElementById('chart_15')); 
+0

メモリプロファイラを使用して、それが起こっているかどうかを確認してみてください。 – Barmar

答えて

0

グラフを毎回作成するのではなく、新しいデータで更新するのが理想的です。これは、あらゆる種類のガベージコレクションの遅延を避けるためです。

+0

提案していただきありがとうございます。宣言をデータを追加する関数の外側に配置しようとしましたが、「Uncaught TypeError:未定義のLineChartプロパティを読み取れません」というエラーが表示され、グラフが機能しません。おそらく私の解決能力を超えたスコープの問題です。グラフのオブジェクトを、グローバル化せずにデータを割り当てる関数で使用できるようにする方法はわかりませんが、唯一の選択肢は引数として渡すことだと思います。 –

関連する問題