我喜欢在Razor视图中使用partials。它使代码更好,更干净。但是使用partials有任何显着的性能成本吗?我创建了一个简单的测试。它表明使用partials 多更慢。
test.cshtml:
@{
var stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
for(var i=0; i<1000; i++) {
var str = "my string #" + i;
@Html.Partial("_MyPartial",str) // replace with @str on second test
<br />
}
stopwatch.Stop();
<br />
@: Time elapsed (ms): @(stopwatch.ElapsedMilliseconds)
}
_MyPartial.cshtml:
@Model
部分在340ms内执行的代码,而内联@str代码显示0或1 ms。这对我来说真的很震撼,因为这意味着我应该摆脱所有可爱的局部,至少在循环中。
如果有人想确认或批评我的实验,我们非常欢迎您。
答案 0 :(得分:9)
答案 1 :(得分:2)
在这个操作中,你有一个秒表,循环1000次,并访问该部分。部分位于单独的内存位置,甚至可能需要磁盘I / O访问才能加载。它显然不如将该代码放在页面本身上。
但是不要拒绝处处的部分。如果您处于没有在页面上多次加载的代码的情况下(与您显示的代码不同),则部分内容非常有用,并且它们造成的性能损失并不严重,您应该感到困扰。
答案 2 :(得分:-1)
是的,使用partials确实会造成性能损失;必须打开和读取新文件,IO总是很慢/昂贵。