<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                換一個角度,在CPU密集的應用場景中,Node是否能勝任呢?實際上,V8的執行效率是十分高的。單以執行效率評判,V8的效率毋庸置疑。 我們將相同的裴波那契數列(F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2))分別用各種腳本語言寫了算法實現,并進行了n=40的計算,以比較性能。這個測試主要偏重CPU棧操作,下表是其中一次運算耗時的排行。在這些腳本語言中(其中C和Go語言是靜態語言,用于參考),Node是足夠高效的,它優秀的運算能力主要來自V8的深度性能優化: ![](https://box.kancloud.cn/2016-08-25_57bdc8fad71a8.png) 這樣的測試盡管并不能完全反映出各個語言的性能優劣,但已經可以表明Node在性能上不俗的表現。從另一個角度來看,這可以表明CPU密集型應用其實并不可怕。CPU密集型應用給Node帶來的挑戰主要是:由于JavaScript單線程的原因,如果有長時間運行的計算(比如大循環),將導致CPU時間片不能釋放,使得后續I/O無法發起。但是適當調整和分解大型運算任務為多個小任務,使得運算能夠適時釋放,不阻塞I/O調用的發起,這樣即可享受到并行異步I/O的好處,還能充分利用CPU。 關于CPU密集型應用,Node的異步I/O已經解決了在單線程上CPU與I/O之間阻塞無法重疊利用的問題,I/O阻塞造成的性能浪費遠比CPU的影響小。對于長時間運行的計算,如果它的耗時超過普通阻塞I/O的耗時,那么應用場景就需要重新評估,因為這類計算比I/O阻塞還影響效率,甚至說是一個純計算的場景,根本沒有I/O。此類應用場景或許應當采用多線程的方式進行計算。Node雖然沒有提供多線程用于計算支持,但是還是有以下兩個方式來充分利用CPU: * Node可以通過編寫C/C++擴展的方式更高效的利用CPU,將一些V8不能做到性能極致的地方通過C/C++來實現。由上面的測試結果可以看到,通過C/C++擴展的實現裴波那契數列計算,速度比Java還快。 * 如果單線程的Node不能滿足需求,甚至用了C/C++擴展后還覺得不夠,那么通過子進程的方式,將一部分Node進程當作常駐服務進程用于計算,然后利用進程間的消息傳遞結果,將計算與I/O分離,這樣還能充分利用多CPU。 CPU密集不可怕,如何調度是訣竅。
                  <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>

                              哎呀哎呀视频在线观看