概述
先看下对比:
测试结果根据具体机器而不同
JPG 5572 x 3715
Program | Time(ms) |
---|---|
cquant | 14-15 ms |
image-palette | N/A |
N/A: crashed.....
JPG 1920 x 1280
Program | Time(ms) |
---|---|
cquant | 3ms |
image-palette | 950ms |
起因
最近需要用到提取主题色,结果呵呵呵,我的Main Loop被疯狂Block. 难道Node就不能异步进行CPU-bound任务吗???
JS不能,C++能. 一番调查之后发现Node的原生拓展(node addon)是能够支持
“多线程”
,其实Node本身就是多线程的呀,只是JS接触不到. 了解了n-api 和node addon api之后发现node-addon-api 是真的简单.
实现
node-api-api 提供了一个超棒的类:Napi::AsyncWorker
,我们只需要继承这个类,然后重写Execute函数Node就可以自动帮我们分配线程来运行,完全不用担心阻塞啦。
// 片段
void Execute() {
counter = (size_t *)malloc(sizeof(size_t) * max_color);
// pix_median_cut_quant MMCQ 耗时任务
cmap = pix_median_cut_quant(pix, max_color, 5, 0, counter);
}
复制代码
具体的细节可以查阅我的项目。
使用
既然这么好我咋在npm上没看到呢???
因为项目还没完全测试,有些细节还没实现,现在基本
可用.所以本着不祸害别人的基本原则,还是先不上传
cquant项目地址
更多
写这个项目也学到很多东西,准备写几篇博客分别介绍吧。
TBC...
转载于:https://juejin.im/post/5c3d21c76fb9a049e412f28e
最后
以上就是不安外套为你收集整理的CQuant: 也许是Node下最快的主题色提取包了的全部内容,希望文章能够帮你解决CQuant: 也许是Node下最快的主题色提取包了所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复