Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提高页面加载时的性能_C#_Asp.net - Fatal编程技术网

C# 提高页面加载时的性能

C# 提高页面加载时的性能,c#,asp.net,C#,Asp.net,我有一个.aspx屏幕,显示asp:GridView组件中的一些数据。页面加载时最多可返回约30k条记录。 从数据库检索13000条记录大约需要30秒。这是慢还是快? am使用存储过程从数据库检索记录n am仅查询数据库一次并存储它。然后 有一个foreach循环需要2分钟以上才能执行? 因此,加载页面需要aapr 4分钟 我只是一个asp.net的初学者。你能帮我改善页面加载延迟吗 这是循环结构。我们可以用任何方式优化它吗 List auditList=retrievedatafromdata

我有一个.aspx屏幕,显示asp:GridView组件中的一些数据。页面加载时最多可返回约30k条记录。 从数据库检索13000条记录大约需要30秒。这是慢还是快? am使用存储过程从数据库检索记录n am仅查询数据库一次并存储它。然后 有一个foreach循环需要2分钟以上才能执行? 因此,加载页面需要aapr 4分钟

我只是一个asp.net的初学者。你能帮我改善页面加载延迟吗

这是循环结构。我们可以用任何方式优化它吗

List auditList=retrievedatafromdatabase()//此方法从数据库返回记录

               foreach (Entity obj in auditList)
                {

                    obj.CultSpecificRevisedData = "NULL";
                    obj.CultSpecificPublishedData = "NULL";

                    if (obj.RevisedData != null && obj.RevisedData != "NULL")
                        obj.CultSpecificRevisedData = ConvertToProfileSpecificFormat(Convert.ToDecimal(obj.RevisedData), DecimalSeparator);
                    if (obj.PublishedData != null && obj.PublishedData != "NULL")
                        obj.CultSpecificPublishedData = ConvertToProfileSpecificFormat(Convert.ToDecimal(obj.PublishedData), DecimalSeparator);

                    var yearPart = obj.CalendarYear;
                    var monthPart = string.Empty;
                    var frequencyName = GetEnglishFrequencyBame(frequencyTypeMasId);
                    if (frequencyName == FrequencyType.Monthly)
                    {
                        monthPart = new DateTime(obj.CalendarYear, GetMonthNumber(obj.Month), 1).ToString("MMM");
                        obj.CultSpecificPeriod = monthPart + "-" + yearPart.ToString();
                    }
                    if (frequencyName == FrequencyType.Quarterly)
                    {
                      UserMessage = obj.QuarterName;
                        obj.CultSpecificPeriod = UserMessage + "-" + yearPart.ToString();
                    }
                    else if (frequencyName == FrequencyType.BiAnnually)
                    {
                        UserMessage = obj.SemesterName;
                        obj.CultSpecificPeriod = UserMessage + "-" + yearPart.ToString();
                    }
                    else
                    {
                        obj.CultSpecificPeriod = yearPart.ToString();
                    }


                }

分页是您的第一选择

但你应该考虑以下几点: 你真的需要三万张唱片吗? 用户通常不会查看前10\20条记录,尝试只返回前100\1000条记录,并提供良好的搜索和筛选功能,从而科学地限制结果集

我也有同样的问题,我知道用户不需要那么多的结果,他们需要一个好的方法来找到他们想要的结果

当然,这可以与分页合并在一起


如果分页不适合您的解决方案(出于某种原因),您不同意上面所说的,请发布一些代码,我们将尝试帮助您进行性能优化。请记住,有时这是一项非常艰巨的任务

我将回应关于不需要30K记录的评论。研究表明,人类实际上无法在视觉上处理超过2000个列表项的任何内容,如果你显示的内容超过了这一点,你实际上是在欺骗你的用户,鼓励他们对数据有错误或不完整的感觉


但是如果您坚持这样做,您要做的是迭代手动设置的记录,使用Response.Write()手动为每一行编写html并将其发送到浏览器,然后使用计数器不时调用Response.Flush()。如果您的数据层也支持从数据库(即:通过datareader)流式传输数据,而不是将整个结果集加载到RAM中,则会获得额外的积分。

。你需要分页数据。。你能给我们看看你目前使用的代码吗?除了分页之外。检索需要30秒还是包括渲染?带网格的Viewstate可能会变得相当大,从而导致页面膨胀。添加了分页。是的,检索数据需要30秒,然后在检索到的数据上运行am RUNNIG foreach循环,这几乎需要2分钟。启用分页。检索完所有记录后,在检索到的数据上运行am RUNNIG foreach循环,这几乎需要2分钟我使用数据网格显示。我已经制定了一个解决方案,比如只返回前100\1000个,并提供良好的搜索和过滤功能,作为一种解决方案,但我的老板想知道是否有改进屏幕/数据查询性能的余地?是否有改进循环或存储过程性能的余地?已启用分页。一旦检索到所有记录,然后在检索到的数据上运行foreach循环,这花费了将近2分钟的时间,然后使用数据网格显示。我的目的与您提到的相同,比如只返回前100\1000,并提供良好的搜索和筛选功能作为解决方案,但我的老板想知道是否有改进屏幕/数据查询性能的余地?是否有改进循环或存储过程性能的余地?显示您的代码以供参考SQL和.NET,我要说的是,性能优化总是有空间的,比如SQL索引和使用LINQ in C#…循环结构。你能帮我解决一下吗?我已经解决了每次迭代中调用的GetEnglishFrequencyBame(frequencyTypeMasId),它并不是每次迭代都需要的,所以退出了循环。现在我可以看到性能的提高。感谢您的宝贵意见……干杯:)