연속된 쳥크 10개의 단위인 Block 단위로 전송하도록 적용
Closed this issue · 2 comments
happyhj commented
레퍼런스를 찍었다가 없애는 방법으로 GC가 될지도 모른다는 기대...
happyhj commented
요구사항
- 한번에 전송하는 Binary data의 용량은 16000byte로 정한다. (chunk의 크기) <- 이 크기만큼 작아야 메모리 누수가 없다.
- 수신측에서 FileSystem에 저장을 수행 시 File IO 오버헤드를 줄이기 위해 연속적인 chunk 10개를 하나로 합쳐 file write를 수행하도록 한다.
- 이 단위를 block (연속한 부분의 데이터 chunk 10개로 한번에 파일에 쓰는 단위) 이라고 부르겠다. (10개라는 단위를 상수로 빼내어 사용해서 변경이 용이하도록 만들자)
- 각 block은 연속한 데이터를 보내지 않아도 되지만 block내 chunk는 연속한 data를 가져야한다.
- 전송시 순서의 보장이 되므로 전송 chunk 속에 index 에 필요한 데이터를 담을 필요가 없다. 처음 block 전송 시 블록정보만 따로 보낸 후 그 후엔 데이터로만 채워서 속도를 높이자.
- FileSaver 는 한 block을 받아서 저장하고 다음 블록을 요청하는 방식으로 작동하게 한다.
- 받아서 저장하는 과정 자체는 비동기로 동작하므로 현재상황에서 궂이 웹 워커로 만들지 않아도 될 것으로 보인다.
happyhj commented
BLOCK_SIZE = 64 으로 설정.
그 이상 은 성능이 비슷하다.