为什么我的javascript在Safari桌面上会慢下来,而不是Chrome或Safari mobile?

为什么我的javascript在Safari桌面上会慢下来,而不是Chrome或Safari mobile?,javascript,safari,Javascript,Safari,我有一个javascript,它可以进行大量计算,并将结果以许多数组的形式绘制到GoogleCharts对象。无需重新加载页面,我就可以应用新值并反复运行分析,每次都绘制结果。奇怪的是,这在Chrome上运行得很好,但在macOS上的Safari中,每进行一次新的分析,它都会变慢,需要重新加载页面才能使其恢复速度。然而,在Chrome桌面和移动设备以及Safari移动设备中,它一直以最高速度运行,不需要重新加载。我怀疑Safari macOS正在缓存一些东西并填充内存。我正在使用一组每次创建的图

我有一个javascript,它可以进行大量计算,并将结果以许多数组的形式绘制到GoogleCharts对象。无需重新加载页面,我就可以应用新值并反复运行分析,每次都绘制结果。奇怪的是,这在Chrome上运行得很好,但在macOS上的Safari中,每进行一次新的分析,它都会变慢,需要重新加载页面才能使其恢复速度。然而,在Chrome桌面和移动设备以及Safari移动设备中,它一直以最高速度运行,不需要重新加载。我怀疑Safari macOS正在缓存一些东西并填充内存。我正在使用一组每次创建的图形对象(下面的代码)(但可能也是垃圾收集的)


理想情况下,您应该使用新数据更新图表,而不是每次都创建它们。这是为了避免任何类型的垃圾收集延迟

尝试使用内存分析器查看是否发生了这种情况。感谢您的建议。我尝试将声明放在添加数据的函数之外,但收到一个错误,“UncaughtTypeError:无法读取未定义的属性'LineChart',并且图表不起作用。可能是我无法解决的范围问题。我不知道如何使分配数据的函数可以使用图表对象,而不使它们成为全局对象,我认为唯一的替代方法是将它们作为参数传递,这将非常麻烦,因为有这么多。
        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'));