Javascript AMCHART4比3慢得多
很长一段时间以来,我一直在使用Amcharts3。出于许多原因,我目前正在重写我的应用程序并“升级”各种内容,因此升级AmCharts也是有意义的 只是它太慢了 这把小提琴:Javascript AMCHART4比3慢得多,javascript,performance,amcharts,amcharts4,Javascript,Performance,Amcharts,Amcharts4,很长一段时间以来,我一直在使用Amcharts3。出于许多原因,我目前正在重写我的应用程序并“升级”各种内容,因此升级AmCharts也是有意义的 只是它太慢了 这把小提琴: https://jsfiddle.net/jhartnoll/e1g25y8v/ 这里我有一组图表,显示了12个月内5个地点的发货收据,所以有60个数据点 如果单击每个按钮,它将分别使用Amcharts 3和Amcharts 4的相同数据和几乎相同的配置呈现图表 首先,Amcharts 4做任何事情都要慢得多,点击按钮几
https://jsfiddle.net/jhartnoll/e1g25y8v/
这里我有一组图表,显示了12个月内5个地点的发货收据,所以有60个数据点
如果单击每个按钮,它将分别使用Amcharts 3和Amcharts 4的相同数据和几乎相同的配置呈现图表
首先,Amcharts 4做任何事情都要慢得多,点击按钮几秒钟后,任何事情都会显示出来
其次,当它确实显示我的时间记录的工作方式时,它表明Amcharts4上的“ready”事件在加载所有图表之前不会被触发。这一定与它的雏菊链图表的方式有关
当然,与事件的绑定略有不同:
events: {
"ready": function(ev) {
var total = performance.now() - start;
$("#shippingReceipts").append($("<div/>").text("took: " + total + "ms"))
console.log("chart_" + name + " ready", );
}
}
"listeners": [{
"event": "rendered",
"method": handleRender
}]
事件:{
“就绪”:功能(ev){
var total=performance.now()-start;
$(“#发货收据”)。追加($(“”)。文本(“take:“+total+”ms”))
log(“图表”+名称+“就绪”,);
}
}
“听众”:[{
“事件”:“已呈现”,
“方法”:handleRender
}]
这是一个管理仪表板,它将显示这个加上大约4个其他图表,它不仅会导致在启动时加载空白框,而且在编写这些图表时似乎还会占用浏览器一秒钟左右
我一直对AmCharts印象深刻,所以我不敢相信我在这里看到的是正确的——我一定是做错了什么,但到目前为止我已经在上面浪费了两天时间,无论我做什么,它总是极其缓慢
有什么想法吗
编辑/更新:
我把这里建议的createDeferred
函数搞砸了:
新的JSFIDLE在这里:
虽然这提供了稍微好一点的用户体验,但我仍然对每个图表的渲染速度感到失望