Node.js 單線程與多進程
大家都知道 Node.js 性能很高,是以異步事件驅動、非阻塞 I/O 而被廣泛使用。但缺點也很明顯,由于 Node.js 是單線程程序,如果長時間運算,會導致 CPU 不能及時釋放,所以并不適合 CPU 密集型應用。
當然,也不是沒有辦法解決這個問題。雖然 Node.js 不支持多線程,但是可創建多子進程來執行任務。
Node.js 提供了 child_process 和 cluster 兩個模塊可用于創建多子進程
下面我們就分別使用單線程和多進程來模擬查找大量斐波那契數進行 CPU 密集測試
以下代碼是查找 500 次位置為 35 的斐波那契數(方便測試,定了一個時間不需要太長也不會太短的位置)
單線程處理
代碼:single.js
function fibonacci(n) { if (n == 0 || n == 1) { return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); }}let startTime = Date.now();let totalCount = 500;let completedCount = 0;let n = 35;for (let i = 0; i < totalCount; i++) { fibonacci(n); completedCount++; console.log(`process: ${completedCount}/${totalCount}`);}console.log("
注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
新聞熱點
疑難解答