Asp.net mvc 世卫组织';s更快的mvc2';s模板化帮助程序或mvccontrib';s输入生成器

Asp.net mvc 世卫组织';s更快的mvc2';s模板化帮助程序或mvccontrib';s输入生成器,asp.net-mvc,mvccontrib,Asp.net Mvc,Mvccontrib,有人知道哪一个更快吗?你的答案取决于你从哪里加载浏览页面 模板化的助手有一点优势,因为在没有任何视图覆盖的情况下,他们在幕后操纵字符串以生成html输出 输入生成器通过嵌入式资源或传统的文件系统加载视图,而传统的文件系统总是比硬编码字符串操作稍慢 两者的代码相似,并且基本上执行相同数量的反射和元数据处理。在没有任何文件或资源加载复杂性的情况下,它们都以

有人知道哪一个更快吗?

你的答案取决于你从哪里加载浏览页面

模板化的助手有一点优势,因为在没有任何视图覆盖的情况下,他们在幕后操纵字符串以生成html输出

输入生成器通过嵌入式资源或传统的文件系统加载视图,而传统的文件系统总是比硬编码字符串操作稍慢

两者的代码相似,并且基本上执行相同数量的反射和元数据处理。在没有任何文件或资源加载复杂性的情况下,它们都以<1毫秒的速度运行。
通过嵌入式资源或文件系统调用定制模板资源,两者的性能损失相同。

输入生成器的嵌入式资源通过WebFormView引擎提供服务。当应用程序在webconfig中设置为debug=false时,视图引擎将缓存视图,因此仅从程序集加载一次。输入构建器会稍微慢一点的真正原因是它们使用母版页来减少您维护的HTML。例如,编辑器模板将生成一个输入。Equivilent Input Builder将生成标签、输入和html“chrome”“围绕这两个选项,以便您可以指定一次,并将其应用于使用输入生成器的每个表单。输入构建器实际上是为了应用一种约定来构建表单标记,它以一种既能让您控制又能让html片段保持“干燥”(不要重复)的方式来实现


就像一切事物一样,也有权衡。对于输入构建器,您需要权衡一些运行时性能以提高开发人员的生产率。在一天结束时,如果你需要在一个公共网站上有一个高性能的表单,你最好的选择是提供一个静态html文件,发布到MVC操作

我假设大多数视图引擎都会缓存视图。我知道spark会在内存中缓存编译后的版本。我使用FubuMVC输入约定(),它也内置了缓存,所以我没有遇到任何性能问题,但我也从未做过性能比较。如果您也使用Field.Master作为TemplatedHelpers(如此处),如果你在这个场景中使用主模板,我认为你所说的是等效功能,一个非常类似的实现,因为InputBuilder使用内置的WebFormsViewEngine。我想说的是,在关键时刻,内置的帮助应该更快,因为它们在性能上投入了更多的时间。这需要权衡,因为输入构建器提供了一个干净的约定api,用附加值(比如下拉列表)丰富您的模型。您可以用一些性能换取更干净的可扩展性。