0

现在我正在编码解压缩文件,我在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;
        }
       }
      });
  }

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

4

0 回答 0