C# JQuery循环降低Google图表性能

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();

我有一个谷歌图表,它通常非常慢(超过5分钟),有时会崩溃,这取决于我需要显示的系列的数量。如果我有一个系列,大约需要10秒,但如果我加上20个系列,则需要几分钟以上的时间,浏览器就会死机

每个系列都有来自JSON的大约8000行。我已经检查并测试了代码,图表代码中的循环正在杀死它

我的图表代码如下:

 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"}]