Kar*_*sar 2 stringtemplate razor stringtemplate-4
是否有任何原因或我做错了什么,为什么 RazorEngine 仅解析 100 个不同的模板就这么慢?我正在研究 StringTemplate,并执行了两个测试进行比较,如下所示。
[Test]
public void TestStringTemplate()
{
CsStopwatch stopwatch = new CsStopwatch();
stopwatch.Start();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100; i++)
{
string template = @"Hello there my name is <Name> <Surname> " + i;
TextParseTests.TestModel model = new TextParseTests.TestModel();
model.Name = "Karl";
model.Surname = "Cassar";
Template t = new Template(template);
t.Add("Name", model.Name);
t.Add("Surname", model.Surname);
var result = t.Render();
sb.AppendLine(result);
}
stopwatch.Stop();
var ms = stopwatch.ElapsedMilliseconds;
int k = 5;
//109ms
}
[Test]
public void TestRazorEngine()
{
CsStopwatch stopwatch = new CsStopwatch();
stopwatch.Start();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100; i++)
{
string template = @"Hello there my name is @Model.Name @Model.Surname " + i;
TextParseTests.TestModel model = new TextParseTests.TestModel();
model.Name = "Karl";
model.Surname = "Cassar";
var result = Razor.Parse(template, model);
sb.AppendLine(result);
}
stopwatch.Stop();
var ms = stopwatch.ElapsedMilliseconds;
int k = 5;
//24000~ ms
}
Run Code Online (Sandbox Code Playgroud)
差别是惊人的。
这比 StringTemplate 慢 200 多倍!我有很多使用 RazorEngine 格式的内容,我更喜欢 RazorEngine 的语法而不是 StringTemplate。然而,这是非常非常缓慢的。
如果我做错了什么,有什么想法吗?请注意,我故意使用不同的模板,就好像我对 RazorEngine 使用缓存一样,它的速度要快得多(低至 300 - 400 毫秒),但我的网站有很多不同的小文本,这是最“真实的”我能做的生活'测试。
Razor.Parse 每次都会编译模板。
你不应该这样做。您的应用程序应该编译模板一次,或者如果模板在应用程序运行时被修改,则只要模板被更改。
Razor.Compile(模板,名称);
在此之后,您的应用程序应该使用
Razor.Run(名称,模型);
比较 Razor.Run 而不是 Razor.Parse 的时间
| 归档时间: |
|
| 查看次数: |
2343 次 |
| 最近记录: |