为什么要将文件分块编码?

编码指的是冗余编码或者加密编码等。如果能够将大文件一次性读入内存进行编码的话,为什么要选择将连续的文件分成一块一块(packet)地进行编码呢?个人认为原因有几点:

  1. 节省内存,减少I/O 时间
  2. 利用CPU 缓存局部性,适当的选择packet 大小能够提高编码速度

2

上图给出了RS 码在编码1GB、512MB和256MB 时,不同packet 对编码速度的影响。总体来说,文件越大,编码速度越慢;packet 大小在16KB 和1MB 之间(缓存大小)编码速度最快;packet 超过缓存大小时,编码速度有所下降。packet 大小在RDP 码上的影响参考[1]

 

[1] Plank, James S., et al. “A Performance Evaluation and Examination of Open-Source Erasure Coding Libraries for Storage.” FAST. Vol. 9. 2009.