C# JQuery循环降低Google图表性能
我有一个谷歌图表,它通常非常慢(超过5分钟),有时会崩溃,这取决于我需要显示的系列的数量。如果我有一个系列,大约需要10秒,但如果我加上20个系列,则需要几分钟以上的时间,浏览器就会死机 每个系列都有来自JSON的大约8000行。我已经检查并测试了代码,图表代码中的循环正在杀死它 我的图表代码如下:C# JQuery循环降低Google图表性能,c#,json,charts,google-visualization,asp.net-core-2.0,C#,Json,Charts,Google Visualization,Asp.net Core 2.0,我有一个谷歌图表,它通常非常慢(超过5分钟),有时会崩溃,这取决于我需要显示的系列的数量。如果我有一个系列,大约需要10秒,但如果我加上20个系列,则需要几分钟以上的时间,浏览器就会死机 每个系列都有来自JSON的大约8000行。我已经检查并测试了代码,图表代码中的循环正在杀死它 我的图表代码如下: function drawMultiLineChart() { var section = $('#LocationNameDdl :selected').val();
function drawMultiLineChart() {
var section = $('#LocationNameDdl :selected').val();
var uid = '@guid';
var from = $('#dateFrom').val();
var to = $('#dateTo').val();
var parsedData = "";
var dName = "";
var colIndex = "";
var result = "";
var rowIndex = "";
$.ajax({
url: 'ProjectCharts/GetChartDataBySection',
datatype: 'json',
type: 'get',
async: false,
data: { section: section, uid: uid, from: from, to: to },
contentType: 'application/json; charset=utf-8',
success: function (d) {
google.charts.load('current', {
packages: ['corechart']
}).then(function () {
parsedData = $.parseJSON(d);
dName = new google.visualization.DataTable();
dName.addColumn('date', 'Date');
$.each(parsedData, function (key, value) {
colIndex = dName.addColumn('number', 'Serial: ' + key);
result = $.parseJSON(value);
$.each(result, function (k, v) {
rowIndex = dName.addRow();
dName.setValue(rowIndex, 0, new Date(v.ReadingDate));
dName.setValue(rowIndex, colIndex, Number(v.ReadingValue));
});
});
var options = multiLineChartOptions();
var chart = new google.visualization.LineChart(document.getElementById('chart'));
chart.draw(dName, options);
});
},
error: function () {
alert("Error");
}
});
};
我通过以下代码调用JSON,这很好,执行速度非常快:
public async Task<JsonResult> GetJsonChartData(string serial, string uid, string from, string to)
{
var dateFrom = Convert.ToDateTime(from).ToString("yyyy-MM-dd HH:mm:ss");
var dateTo = Convert.ToDateTime(to).ToString("yyyy-MM-dd HH:mm:ss");
var g = new GetChartData(_configuration);
List<ChartDataModel> items = await Task.Run(() => g.GetChartDataFromSqlServer(serial, uid, dateFrom, dateTo));
return Json(JsonConvert.SerializeObject(items, Formatting.Indented));
}
如何提高性能和加载时间?
我应该使用不同的图表工具吗?
我可以处理允许提高性能的数据服务器端吗?如果您以找到的格式生成json,您将能够直接创建数据表,而无需对客户端进行任何操作,这将极大地提高性能…感谢这一点…我注意到有几个包装器用于此(不适用于netcore),但我可以只使用字符串生成器来创建输出。我对c#/netcore不是很熟悉,字符串生成器可能会工作,但您应该能够创建相同的json结构,然后对其进行序列化。值得一提的是,这里有一个。。。
[{"LoggerId":"1000651443","ReadingDate":"2018-12-05 00:03:03, "ReadingValue":"12.6", "Tooltip":"Someinfo"},
{"LoggerId":"1000651447","ReadingDate":"2018-12-05 00:04:03, "ReadingValue":"12.7", "Tooltip":"Someinfo"}]
[{"LoggerId":"1000651444","ReadingDate":"2018-12-05 00:03:05, "ReadingValue":"12.9", "Tooltip":"Someinfo"},
{"LoggerId":"1000651445","ReadingDate":"2018-12-05 00:03:07, "ReadingValue":"14.9", "Tooltip":"Someinfo"}]
[{"LoggerId":"1000651446","ReadingDate":"2018-12-05 00:03:17, "ReadingValue":"13.6", "Tooltip":"Someinfo"},
{"LoggerId":"1000651446","ReadingDate":"2018-12-05 00:04:17, "ReadingValue":"43.6", "Tooltip":"Someinfo"}]