我创建了库uwork,但启动每个进程需要一些时间,因此它不适合实时应用程序。做了一些性能基准,我得到了this snippet来说明问题:
let external = (new Date()).getTime();
let blob = new Blob([`
let internal = new Date();
console.log("Creation:", internal - ${external} + 'ms');
`], {"type": "text\/plain"});
let file = URL.createObjectURL(blob);
let ww = new Worker(file);
创建文件和Web worker需要50-400ms之间的任何时间。有没有办法优化这个?为什么需要这么长时间?
这对于“漫长”的处理时间是完全可以的,因为那时启动时间可以忽略不计,但对于视频分析这样的实时应用程序来说这是不可能的,我希望以至少10fps(100ms /运行)的速度应用它
修改
在some testing之后,这也需要50-400毫秒,所以我强烈认为这是URL.createObjectURL()
(或new Blob()
)花费这段时间而不是创建网络工作者的本身:
let external = (new Date()).getTime();
let blob = new Blob([external], {"type": "text\/plain"});
let file = URL.createObjectURL(blob);
fetch(file).then(res => res.text()).then(file => {
console.log("Fetched:", new Date() - parseInt(file), 'ms');
});