Кто-нибудь знает разницу в производительности между движками Razor, Spark и NVelocity? - PullRequest
5 голосов
/ 29 июля 2011

Кто-нибудь имел какие-либо показатели производительности, сравнивающие различные реализации viewengine для ASP.NET MVC3?Особенно меня интересуют различия в производительности между Razor, Spark и NVelocity.Я понимаю, что последнее несколько устарело, но мы используем его для генерации электронных писем и хотели бы заменить его на RazorEngine.

Раньше NVelocity был быстрым, но сейчас я подозреваю его производительность по сравнению с другими, более современными системами просмотра.

Любое понимание будет оценено.

Ответы [ 2 ]

3 голосов
/ 29 июля 2011

Один из авторов RazorEngine здесь. Первая компиляция представления всегда медленная. После этого он кешируется и должен быть довольно быстрым. В конечном итоге выходит новая версия, которая будет переписана. Кроме того, я уже написал гораздо меньшую / более простую /, надеюсь, более быструю версию с помощью Сэма Саффрона. (с этого сайта) Тем не менее, я не проводил никаких тестов производительности RazorEngine против любого другого движка.

Сама бритва компилируется (после первого вызова). Если Spark и другие также скомпилированы, они могут быть такими же быстрыми. Но на первый взгляд я бы предположил, что * Razor будет быстрее после первого вызова из-за собственного кода по сравнению с анализом файла при каждом вызове.

Самый простой способ проверить это - профилировать каждого и сделать это определение для себя. Окружающая среда каждого будет разной, что может дать разные результаты.

* Мы все знаем, что предполагает

1 голос
/ 14 января 2013

Я знаю, что это старый вопрос, но после поиска лучших альтернатив бритве, я все еще думаю, что ни один из них не быстрее, чем nvelocity.Бритва дает вам интеллигентность и ее легче кодировать.Но nvelocity НАМНОГО быстрее.В приведенном ниже примере вы обнаружите, что бритве требуется 2 секунды для разбора одной строки текста.NVelocity анализирует мгновенно.Я также проверил это с файлами шаблонов, тот же результат.2 секунды для разбора слишком медленно для коммерческого веб-приложения.Поэтому, несмотря на то, что мне нравится бритва гораздо больше, у меня нет выбора, кроме как придерживаться NVelocity.

Я не очень уверен насчет кэширования.Но в случае анализа строк (в отличие от анализа на основе файлов), как в примере ниже, кэширование для бритвы отсутствует.

Простой пример asp.net:

protected void Page_Load(object sender, EventArgs e)
{
    string toParseText = "bladiebla $Model.SomeProperty";
    dynamic model = new ExpandoObject();
    model.SomeProperty = "hello";
    string result = Razor.Parse(toParseText, model);


    var _templateEngine = new VelocityEngine();
    _templateEngine.Init();
    var context = new VelocityContext();
    context.Put("Model", model);
    using (StringWriter writer = new StringWriter())
    {
        _templateEngine.Evaluate(context, writer, "", toParseText);
        string result2 = writer.ToString();
    }
}

NuGet:

  • установочный пакет RazorEngine
  • установочный пакет nvelocity
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...