减少Javascript CPU使用率

我打算在本地写一些用于加密
javascript文件的代码.对于大文件和大密钥大小,CPU使用率(自然)非常高.在单个脚本设计中,这通常会挂起浏览器,直到任务完成.

为了提高响应速度并允许用户在同一时间做其他事情,我想尝试使脚本对用户的PC更“友好”.加密过程将以二进制字符串形式读取文件,然后以块的形式加密字符串(类似于1KB /块 – 需要测试).我想尝试并使用基于HTML5的工作人员使整个事情尽可能增量.就像是:

>产卵工人
>向worker发送二进制数据块
>工作人员完成加密,传回新块
>工人死了.

通过让多个工作人员同时活着,这也可能有助于多核处理器.

无论如何,是否有人为了降低CPU使用率而故意放慢脚本速度?将工作人员的加密任务拆分为单个操作,并在它们之间引入延迟之类的事情.

间隔定时器每100ms回调一次(例子).

工人忙吗?
是的 – 等待另一个间隔
否 – 开始加密下一个字母

建议/想法?

有没有人有使用工人的经验?如果你将主要用户界面与工作人员分开来加强工作,那么响应能力是否会提高?

最佳答案 这不使用任何HTML5,但这是一个每N毫秒调用一个函数的例子,假设你可以确定一个合适的等待时间.基本上,我试图通过向您展示在执行更多处理之前强制停止一段时间的方法来帮助您.

function doSomething(){
   clearTimeout(timeout);
   // do your "expensive" processing
   // ...
   // decide the job is done and return here or else
   // call doSomething again in sleepMS milliseconds
   timeout = setTimeout(doSomething,sleepMS);
}
var timeout;
var sleepMS = 1000;


doSomething();

编辑

改变了最后一行

var timeout = setTimeout(doSomething,1000);

就是这样

doSomething()

编辑2

在setTimeout调用中将1000更改为sleepMS,duh 🙂

点赞