node js LZ4 decodeBlock用Buffer解压缩循环

时间:2017-06-17 08:47:45

标签: node.js buffer lz4

现在我正在编译解压缩文件,我在https://github.com/pierrec/node-lz4中引用了LZ4.decodeBlock。但我需要读取一个切片并用循环解压缩。我编码如下。它工作正常。但它使用了大量的内存。每个切片都有一个新的64K缓冲区。

decipher.on('readable', ()=> {
      while (1) {
          var body = decipher.read(len);
          if (body) {
            var uncompressed = new Buffer(64*1024);

            var uncompressedSize = lz4.decodeBlock(body, uncompressed);
            var uncompressed_end = uncompressed.slice(0, uncompressedSize);
            outStream.write(uncompressed_end);
          } else {
            break;
          }
        } else {
            break;
        }
       }
      });
  }

然后我想优化内存使用情况,我将其修改如下。它将使用更少的内存。但它无法解压缩到与原始文件相同的内容。

var uncompressed = new Buffer(64*1024);
   decipher.on('readable', ()=> {
      while (1) {
          var body = decipher.read(len);
          if (body) {
            var uncompressedSize = lz4.decodeBlock(body, uncompressed);
            var uncompressed_end = uncompressed.slice(0, uncompressedSize);
            outStream.write(uncompressed_end);
          } else {
            break;
          }
        } else {
            break;
        }
       }
      });
  }

那么我应该如何利用缓冲区来优化内存使用?

0 个答案:

没有答案