2014-05-21 2 views
1

GM npm 모듈을 사용하여 Node.js의 GraphicsMagick에서 놀랍게도 느린 성능을보고 있습니다.GraphicsMagick for Node.js (GM 모듈) 성능

저는 icon16.png (320 바이트)라는 간단한 16px X 16px 아이콘이 있습니다. 나는 단순히이 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); 
      } 
     }); 
    }; 

175ms (즉, console.log 출력은 175)입니다. 왜 그렇게 오래 있지? 매번 C++ GraphicsMagick 라이브러리를 디스크에서로드해야합니까? 참고 : Joyent에서 SmartOS를 사용하고 있습니다.

답변

2

gm 모듈은 명령 줄 도구를 호출합니다. 대신 graphicsmagick 라이브러리에 대한 실제 바인딩 인 graphicsmagick2을 사용할 수 있습니다. 불행히도 문서가 없으므로 원본을 읽어야합니다 (너무 길지 않습니다).

1

당신은 이미지 조작을위한 Node.js를 모듈을 비교하기 위해 시도 할 수 있습니다 - https://github.com/ivanoff/images-manipulation-performance

Comparation 예 :

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 == 

을 당신이 볼 수있는이 예에서 모듈은 최고입니다 캔버스보다, 이미지 처리 속도와 관련 있음 (작성자의 로컬 컴퓨터에서 초당 ~ 4 imgages)