我打算編寫一些本地加密JavaScript文件的代碼。對於大文件和大型密鑰大小,CPU使用率(自然)非常高。在單個腳本設計中,這通常掛起瀏覽器直到任務完成。減少Javascript的CPU使用率
爲了提高響應速度,並允許用戶做其他事情的同時,我想嘗試使腳本「友好」到用戶的PC。加密過程將讀取文件作爲二進制字符串,然後以塊的形式加密字符串(如1KB /塊 - 需要測試)。我想嘗試和使用基於HTML5的工作人員儘可能增加整個事情。喜歡的東西:
- 菌種工人
- 發送工人的二進制數據塊
- 工人完成加密,傳回新的塊
- 工人死亡。
這可能也有助於多核處理器,通過讓多個工作者同時存活。
反正已經有人看着刻意爲了降低CPU使用率放緩腳本?例如將工作人員的加密任務分解爲單個操作,並在它們之間引入延遲。
間隔定時器回調每100ms(實施例)。
工作人員忙嗎?
是 - 等待下一次的時間間隔
否 - 開始加密的下一個字母
建議/想法?
沒有人有使用經驗的工人?如果您將主UI從工作中分離出來,那麼響應能力是否會提高?
這就是我想的。並且引入這種延遲將會減少整體CPU使用率,並且不會掛起瀏覽器(儘管放慢總體加密時間)會產生淨效應? – Oliver
沒錯,這是一種減少CPU使用率的迂迴方式,因爲(沒有任何ActiveX或其他插件),JS不會讓您直接訪問CPU上的處理器時間。這是另一個可以幫助你的技巧,http://stackoverflow.com/questions/5177451/measure-processing-time-of-ajax-call這對你的任務也有用 – mrk
也許你的意思是setTimeout(doSomething,sleepMS);在函數的結尾? –