2014-11-20 8 views
0

node.js를 사용하는 다중 사용자 응용 프로그램이 있고 크기가 큰 uint8array를 압축하여 압축 후 저장합니다 (따라서 실시간 요구 사항이 없음).NodeJs 백그라운드에서 uint8array를 압축하는 방법

압축이 아마도 차단되어 있으므로 백그라운드 스레드에서이 작업을 수행하고 싶습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? (예를 들어 webworker와 함께 외부 libary를 사용하는 데 문제가있어서 예제 코드가 좋을 것이다.)

데이터가 매우 반복적이어서 단순한 수축 유사 압축으로 충분할 수 있습니다.

+0

node.js가 단일 스레드가 아닌가? –

+0

순수 스레드 구현 (https://github.com/xk/node-threads-a-gogo) 및 웹 작성자 구현 (http://en.wikipedia.org/wiki/Web_worker)이 있으며이 중 많은 것을 기반으로합니다 . – mikkom

+0

죄송합니다. node.js 개발자가 아니므로 질문을 읽을 때만 마음에 듭니다.) –

답변

0

내장 된 zlib 모듈을 사용할 수 있습니다. 내부 스레드 풀에 위임하는 비동기 함수를 포함합니다. 유일한 문제는 입력 된 배열이 아닌 Buffer과 작동한다는 것입니다. 유형이 지정된 배열이나 배열 버퍼를 노드 버퍼로 변환하는 좋은 방법이 없으므로 이진 데이터를 저장하기 위해 버퍼를 사용해야합니다.

+0

데이터를 버퍼로 변환하는 것은 현재 옵션이 아닙니다. – mikkom

+0

아쉽게도 바이트 단위 복사없이 입력 된 배열의 이진 데이터를 버퍼로 전송할 수 없습니다. 유일한 옵션은 C++에서 필요한 기능을 다시 구현하는 것입니다. – vkurchatkin

+0

그건 내가 생각한거야. 간단하게 zlib을 구현하고이를 기반으로 웹 근로자를 만들 것입니다. 어쨌든 코멘트 주셔서 감사합니다. – mikkom