<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 4.8 性能優化 Beetl2.0目前只完成了解釋引擎,使用解釋引擎好處是可以適用于各種場景,性能測試表明,Beetl2.0引擎是Freemaker的4-6倍,跟最好的編譯引擎性能相比,也相差只有30%百分點。為什么Beetl能跑的如此之快呢,簡單的說,有如下策略 - 優化IO輸出,允許使用字節直接輸出,模板中的靜態文本事先轉化為字節 - encode優化,對于number類型,輸出通常是.toString 轉化成String,然后encode輸出,這中間浪費了大量的資源,Beetl實現了encode,輸出一步到位 - Context 采用一維數組,語言里的Context通常采用Map實現,每次進入{} ,就新增一個child Map,盡管map很快,但不夠快。也有其他模板語言采用二位數組提高性能,Beetl是通過固定大小一維數組來維護模板的Context,因此訪問更快,也避免了Map和二維素組的頻繁創建。其實除了此處,beetl很多地方都不采用Map來維護key-value, 而都采用數組索引,以追求性能極限 - 字節碼訪問屬性,通過反射獲取性能比較慢,就算JVM有優化,但優化效果也不確定。Beetl通過字節碼生成了屬性訪問類,從而將屬性訪問速度提高了一個數量級 - 類型推測:Beetl 是強制類型的,因此預先知道類型,可以對模板做一些優化而省去了動態判斷類型的時間 - 使用數組Buffer,避免頻繁創建和銷毀數組 - 編譯引擎將模板編譯成類,會產生大量的類,虛擬機很難對這些做優化。而解釋引擎只有幾十個固定的類,虛擬機容易優化 > #### 相關文章 {docsify-ignore} > > - 為什么JSP會比Beetl慢?[http://my.oschina.net/xiandafu/blog/475740](http://my.oschina.net/xiandafu/blog/475740) > - Beetl 性能揭秘 2 :語言如何存取變量?[http://my.oschina.net/xiandafu/blog/293167](http://my.oschina.net/xiandafu/blog/293167) > - Beetl 性能揭秘 1 :如何輸出一個整型變量?[http://my.oschina.net/xiandafu/blog/284823](http://my.oschina.net/xiandafu/blog/284823) > - 如果對Java性能優化有興趣,可以購買這本我寫的書 https://item.jd.com/12742086.html
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看