[nodejs]Javascript模板引擎效能對比及幾點最佳化

來源:互聯網
上載者:User
文章目錄
  • 情境1:No escape
  • 情境2:All escape

瀏覽器版可直接查看: JavaScript template language shootoff

運行效能測試

測試代碼在:https://github.com/fengmk2/mk2blog/tree/master/2011/4/js-template-benchmarks

$ node benchmarks.js
我的測試環境

CPU: 4核 Intel(R) Core(TM) i3 CPU M 330 @ 2.13GHz
Memory: 4GB
OS: Ubuntu 10.10 2.6.35-28-generic-pae i686

我的測試結果

escape延後處理是需要效能代價的。但是這樣可以減少業務複雜性。

情境1:No escape

渲染10萬次,最快的是doU, doT, nTenjin(基於tenjin的最佳化版本), jst_speed;最慢的是tenjin和jade
doT已經達到百萬次層級了,好神速啊!
!!!新增@shaunlee 的中國第一速度模板引擎: jst,
@shaunlee看見第一次測試結果後非常不滿意,經過最佳化後,速度已經達到第一梯隊了!

No escape, render 100000 times:doT running...use: 0.066 sec, rps: 1515151.5151515151--------------------------------------------doU running...use: 0.064 sec, rps: 1562500--------------------------------------------nTenjin running...use: 0.069 sec, rps: 1449275.3623188403--------------------------------------------jqtpl running...use: 2.059 sec, rps: 48567.26566294317--------------------------------------------ejs running...use: 1.514 sec, rps: 66050.19815059446--------------------------------------------haml running...use: 9.532 sec, rps: 10490.97775912715--------------------------------------------jade running...use: 10.592 sec, rps: 9441.087613293052--------------------------------------------jst running...use: 2.089 sec, rps: 47869.79415988511--------------------------------------------jst_speed running...use: 0.065 sec, rps: 1538461.5384615385--------------------------------------------
情境2:All escape

效能馬上變成浮雲了。
速度高低排名: jst(果然是第一速度), nTenjin, jqtpl, ejs, doT, doU, haml, jade
對比情境1,可看到doT和doU的escape效能非常差。

All escape, render 100000 times:doT running...use: 3.921 sec, rps: 25503.698036215254--------------------------------------------doU running...use: 3.926 sec, rps: 25471.217524197655--------------------------------------------nTenjin running...use: 1.306 sec, rps: 76569.67840735069--------------------------------------------jqtpl running...use: 3.012 sec, rps: 33200.531208499335--------------------------------------------ejs running...use: 3.539 sec, rps: 28256.569652444192--------------------------------------------haml running...use: 11.098 sec, rps: 9010.632546404757--------------------------------------------jade running...use: 12.676 sec, rps: 7888.9239507731145--------------------------------------------jst running...use: 4.004 sec, rps: 24975.02497502498--------------------------------------------jst_speed running...use: 1.167 sec, rps: 85689.8029134533--------------------------------------------
從tenjin到nTenjin的幾點效能最佳化方法

原文: https://github.com/QLeelulu/nTenjin/blob/master/README.md

  • jsTenjin是使用eval來解析的,而nTenjin是使用 new Function 來解析的(速度差別之一)。
  • jsTenjin是使用Array.push來構造字串的,而nTenjin是使用 String += str 來構造字串的(速度差別之二)。
  • nTenjin中變數必須由it來指定,例如#{param}要修改為#{it.param},其他和jsTenjin完全一致。
模板引擎最佳化步驟
  1. 使用new Function 解析;
  2. 直接字元從相加 str += s;
  3. 變數不切換上下文,直接it指定
  4. 高效能的escape
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.