Node의 image resize-crop 라이브러리의 최종승자는 sharp 군요.


(InGrowth) #1

출처 ivanoff/images-manipulation-performance#result-example

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 ==
sharp.js : 9.501 img/sec; done in 10.525585 sec; minCPUidle: 95%; minFreeMem: 929Mb; MaxLoadAvg: 0.68
canvas.js : 8.246 img/sec; done in 12.12766 sec; minCPUidle: 95%; minFreeMem: 578Mb; MaxLoadAvg: 0.88
gm.js : 4.433 img/sec; done in 22.557112 sec; minCPUidle: 95%; minFreeMem: 791Mb; MaxLoadAvg: 1.18
gm-imagemagic.js : 3.654 img/sec; done in 27.367915 sec; minCPUidle: 95%; minFreeMem: 804Mb; MaxLoadAvg: 1.33
lwip.js : 1.203 img/sec; done in 83.126963 sec; minCPUidle: 95%; minFreeMem: 54Mb; MaxLoadAvg: 1.21
jimp.js : 0.445 img/sec; done in 224.879934 sec; minCPUidle: 95%; minFreeMem: 82Mb; MaxLoadAvg: 1.28
== DONE ==

gm.js를 사용하다가 느리기도 하고, 가끔 out of memory로 node가 죽는 경우가 있어서 업데이트 하려고 찾아보니…
sharp가 대박이네요…

속도도 대박이지만 메모리가… minFreeMem: 929Mb; 에에에에에?? 메모리를 4차원에서 땡겨서 쓰나요…


(InGrowth) #2

적용해보니 인스턴스의 메모리 utilization이 평균 72%>57%로 15%p 감소하였네요…ㅎㄷㄷ

게다가 16.8Mb짜리 7718*5148 이미지도 메모리 증가 없이 resize & crop 이 됩니다. 충격!


(이종은(Jong Lee)) #3

이 것을 참조해서 on demend로 이미지 리사이징을 하면서 처음으로 sharp를 써봤습니다. 빠르다고는 하던데 이렇게 눈에 띄는 차이일줄은 몰랐네요. 그래서 더욱 lambda에 더욱 적합한 것 같네요.