腳本sleep怎么用 win10中vbs腳本無法輸入密碼?
win10中vbs腳本無法輸入密碼?Option explicit dim obj shell,str program,strkeys set obj shell createobject()strk
win10中vbs腳本無法輸入密碼?
Option explicit dim obj shell,str program,strkeys set obj shell createobject()strkeys hello world要發(fā)送字符,請(qǐng)自行更改str program c: windows syst
nodejs,密集計(jì)算會(huì)飆高cpu,那么有沒有什么方案可以盡可能的優(yōu)化?
密集型計(jì)算會(huì)增加cpu,這很正常。It 這相當(dāng)于搬運(yùn)重物。搬運(yùn)它需要很大的力氣。
優(yōu)化:。
分析代碼,確保沒有消耗cpu的無用代碼,比如無限循環(huán)。
通過一些算法優(yōu)化,比如一些空間換時(shí)間的算法。
并行計(jì)算(因?yàn)閚odejs可以 t直接操縱線程,可以使用child_process多進(jìn)程模式來利用多核計(jì)算)。
如果優(yōu)化后的代碼可以 t達(dá)到預(yù)期效果,可以考慮比v8更高效的C,通過node-gyp編譯成原生模塊。
nodejs對(duì)于cpu密集型計(jì)算的可怕之處在于它阻塞了eventloop,使得后續(xù)任務(wù)無法執(zhí)行,可以 不要利用并發(fā)性,這對(duì)處理請(qǐng)求的服務(wù)器來說是致命的。要解決這個(gè)問題,可以用child_process創(chuàng)建一個(gè)子進(jìn)程,或者用一個(gè)計(jì)算能力更強(qiáng)的機(jī)器來提供微服務(wù)。
我們?cè)趎gnix也遇到過類似的情況,可能有參考意義。服務(wù)器提供上傳設(shè)備固件的功能。用戶可以通過設(shè)備的前端上傳設(shè)備固件。;的網(wǎng)頁(yè),然后后端程序會(huì)將固件升級(jí)到設(shè)備上。
設(shè)備的固件大小在100 m左右,所以我們?cè)趎gnix服務(wù)器上編寫LUA腳本,接受前端網(wǎng)頁(yè)提交的數(shù)據(jù)包。
整個(gè)驗(yàn)收過程中,CPU占用率高達(dá)100%,設(shè)備整體響應(yīng)緩慢,甚至偶爾死機(jī)重啟。后來我們研究了ngnix的相關(guān)配置,發(fā)現(xiàn)沒有相關(guān)配置,甚至交叉編譯相關(guān)模塊,只配置了下載負(fù)載。
后天,我們修改了LUA的劇本。接收到一個(gè)包并處理后,在睡眠的毫秒內(nèi)整個(gè)上傳速率略有下降,但cpu利用率下降到40%左右,系統(tǒng)穩(wěn)定性大大增加。
我覺得node.js應(yīng)該也是類似的道理,樓主也可以用這個(gè)思路,在做了一些操作之后,睡一會(huì)兒,釋放資源給系統(tǒng)。
如果是多核cpu,樓主可以做一些合理的配置。
密集計(jì)算的邏輯直接用c寫。