C# .net MVC-模型生成器循环性能开销

C# .net MVC-模型生成器循环性能开销,c#,asp.net-mvc,performance,C#,Asp.net Mvc,Performance,我对MVC还比较陌生,但我理解它的原理 我担心虔诚地坚持这一原则会导致性能问题 例如,为了只发送视图需要显示的数据,我需要: 从数据库中检索数据 在模型生成器中,通过数据集逐行循环,格式化字段并将其放置在viewmodel中 将其发送到视图,然后视图需要逐行循环数据集以显示它 在大多数情况下,数据中没有那么多行,但我关心的是在数据集中循环两次的要求。循环操作本身就是慢的吗?重复两次似乎很疯狂 我宁愿在视图中设置格式,也不愿重复循环 这是最佳实践吗?在现代系统中,这种循环重复是如此微不足道以至

我对MVC还比较陌生,但我理解它的原理

我担心虔诚地坚持这一原则会导致性能问题

例如,为了只发送视图需要显示的数据,我需要:

  • 从数据库中检索数据
  • 在模型生成器中,通过数据集逐行循环,格式化字段并将其放置在viewmodel中
  • 将其发送到视图,然后视图需要逐行循环数据集以显示它
在大多数情况下,数据中没有那么多行,但我关心的是在数据集中循环两次的要求。循环操作本身就是慢的吗?重复两次似乎很疯狂

我宁愿在视图中设置格式,也不愿重复循环

这是最佳实践吗?在现代系统中,这种循环重复是如此微不足道以至于可以忽略吗

在现代系统中,这种循环重复是如此微不足道,以至于 可以忽略

很可能是这样


没有循环迭代在O(n)处运行。它们并不是天生的慢(假设你没有很多,我指的是很多记录)。我将使用双循环编写代码,并测试它的速度。这很可能是一种微观优化,而您的代码在其他地方效率更低

对于第一点,您可以发出LINQ查询以获取数据。这是最简单的

对于第二点,您可以使用。它会自动将数据库中返回的行映射到
ViewModel
类的实例。它可以像这样映射集合/枚举

对于第三点,您可以将AutoMapper返回的
列表
传递给一个类似网格的文件。它将负责在视图上显示数据,同时允许您对数据进行分页(只返回该页面所需的数据量,而不是从数据库中取出所有行)、对数据进行排序等等


如果使用此工作流,则不必在各个位置循环浏览数据。当使用AutoMapper和WebGrid处理传递给它的行时,循环操作仍然存在。他们只是对你隐藏。这会让你感觉更好。:)循环是这种工作流的固有特性,但如果只返回必要的数据(分页数据),则不会影响用户体验。

首先,我从DB存储过程返回数据。第二和第三-我真的很讨厌使用“automagic”的东西,因为你根本不知道它在做什么,或者它做得有多好-老实说,我发现所有这些东西混淆了很多东西,以至于代码变得不那么容易理解。也许我只是过时了。好的,谢谢,这就是我想知道的。与编译的类文件相比,视图中的代码(即String.Format)的性能是否有差异?或者应该没有区别。不,两者之间应该没有区别。