2012-10-11 60 views
2

我有一個測試套件,使用我運行的mocha.js以確保一切正常。對於我需要的每個模塊,我注意到測試時間增加了大約100毫秒。這是一款功能強大的具有8GB內存的四核機器。node.js中require()的成本是多少?

調用require的實際成本是多少?它會影響應用程序性能還是僅影響性能?

節點的版本是0.8.11如果這是相關的。

回答

5

由於在任何靜態分析過程中都沒有執行,因此要求非常昂貴。它需要做幾件事情,這確實同步,擋住你的程序的時間不確定時間:

  • 它需要找到你需要這可能會導致大量的文件操作的模塊 - 包括路徑檢索,stat,打開。
  • 它需要讀取JavaScript文件,解析它,編譯它的一部分,並在執行期間要求它遇到的任何依賴關係 - 所以再次第一點。

你不應該在任何非頂級代碼中使用require,需要您的測試之前的一切,除非你願意支付的增加執行時間的價格。

曾經有一個異步版本require在很舊的Node.JS中,不幸的是它現在看起來不再。

+3

但是,請注意,一旦某個模塊被「需要」,它就會被緩存,隨後對同一個模塊的require()的調用將非常快,因爲它不需要加載或編譯再次。 – ebohlman