GraphicsMagick for Node.js(GM Module)性能

时间:2014-05-21 23:49:01

标签: node.js png graphicsmagick

我发现使用GM npm模块的GraphicsMagick对Node.js的性能出乎意料地缓慢。

我有一个简单的16px X 16px图标,名为icon16.png(320字节)。我只是使用这个PNG的缓冲区并使用GM将其输出到新的缓冲区(换句话说,我只是调用GM并传递图像而不进行操作以找到性能问题)。

    var timeStart = parseInt(Date.now());
    var newBuffer = gm(icon16buffer, 'icon16.png')
        //.resize(8, 8)
        .toBuffer(function (err, buffer) {
            if (err) {
                next();
            }
            else {
                console.log(parseInt(Date.now()) - timeStart);
                send(200, buffer);
            }
        });
    };

这需要175毫秒(即console.log输出为175)。为什么这么久?每次都必须从磁盘加载C ++ GraphicsMagick库吗?注意:我在Joyent上使用SmartOS。

2 个答案:

答案 0 :(得分:2)

gm模块调用命令行工具。您可能会使用graphicsmagick2来代替,这是对graphicsmagick库的实际绑定。不幸的是没有文档,所以你必须阅读它的来源(这不会太长)。

答案 1 :(得分:1)

您可以尝试比较Node.js模块以进行图像处理 - https://github.com/ivanoff/images-manipulation-performance

比较示例:

  Found images:
  4198671-green-sea-view.jpg
  Beautiful-Sea-Pier-In-Chile-Hdr-Wide-Desktop-Background-Wallpapers-Beautiful-Sea-Wallpaper-.jpg
  Bluestone-valley-view_-_Virginia_-_ForestWander.jpg
Found modules: canvas.js, gm-imagemagic.js, gm.js, lwip.js
== START ==
canvas.js : 4.001 img/sec; done in 7.498536 sec; minCPUidle: 96%; minFreeMem: 283Mb; MaxLoadAvg: 1.48
gm-imagemagic.js : 1.206 img/sec; done in 24.88003 sec; minCPUidle: 96%; minFreeMem: 456Mb; MaxLoadAvg: 1.59
gm.js : 1.536 img/sec; done in 19.528429 sec; minCPUidle: 96%; minFreeMem: 490Mb; MaxLoadAvg: 1.84
lwip.js : 0.406 img/sec; done in 73.891623 sec; minCPUidle: 96%; minFreeMem: 157Mb; MaxLoadAvg: 1.56
== DONE ==

在这个例子中,您可以看到, canvas 模块是最好的,关于图像处理的速度(在作者的本地计算机上每秒约4个imgages)