JavaReedSolomon, 在Java中,Backblaze Reed Solomon

分享于 

3分钟阅读

GitHub

  繁體 雙語
Backblaze Reed-Solomon Implementation in Java
  • 源代码名称:JavaReedSolomon
  • 源代码网址:http://www.github.com/Backblaze/JavaReedSolomon
  • JavaReedSolomon源代码文档
  • JavaReedSolomon源代码下载
  • Git URL:
    git://www.github.com/Backblaze/JavaReedSolomon.git
    Git Clone代码到本地:
    git clone http://www.github.com/Backblaze/JavaReedSolomon
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/Backblaze/JavaReedSolomon
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    JavaReedSolomon

    这是在Java中最初构建的一个简单而高效的reed实现,它最初是在上构建的。 这是一个关于如何在我的博客文章中使用算法的概述。

    ReedSolomon类进行编码解码,由矩阵支持,它是矩阵算法,有限域是 8-bit 值的有限域。

    有关如何使用ReedSolomon的示例,请查看SampleEncoder和 SampleDecoder。 它们以非常简单的方式将文件分解为碎片和编码奇偶,然后如何重新构建原始文件。

    有一个Gradle构建文件来生成 jar 并运行测试。 运行它很简单只需键入: gradle build

    我们希望 send Tennessee大学的James Plank提供关于擦除编码的有用论文的特殊感谢。 如果你想介绍一下它的工作原理,请看一下这篇介绍性的论文。

    这个项目只限于纯Java实现。 如果需要更多的速度,并且可以处理某些汇编语言编程,你可能会感兴趣。 你可以阅读更多关于尖叫快速有限域算术运算的论文。

    性能说明

    内部循环的性能取决于你正在运行的特定处理器。 这个库中有十二个不同的排列,ReedSolomonBenchmark类将告诉你哪一个应用程序更快。 基准中的奇偶校验和数据碎片的数量,以及缓冲区大小,MATCH 在Backblaze的使用。 你可以将基准的参数设置为 MATCH,然后再选择循环实现。

    这些是我在Backblaze存储窗格上运行基准测试的速度:

    
     ByteInputOutputExpCodingLoop 95.2 MB/s
    
    
     ByteInputOutputTableCodingLoop 107.0 MB/s
    
    
     ByteOutputInputExpCodingLoop 130.3 MB/s
    
    
     ByteOutputInputTableCodingLoop 181.4 MB/s
    
    
     InputByteOutputExpCodingLoop 94.4 MB/s
    
    
     InputByteOutputTableCodingLoop 138.3 MB/s
    
    
     InputOutputByteExpCodingLoop 200.4 MB/s
    
    
     InputOutputByteTableCodingLoop 525.7 MB/s
    
    
     OutputByteInputExpCodingLoop 143.7 MB/s
    
    
     OutputByteInputTableCodingLoop 209.5 MB/s
    
    
     OutputInputByteExpCodingLoop 217.6 MB/s
    
    
     OutputInputByteTableCodingLoop 515.7 MB/s
    
    
    
    

    Bar Chart of Benchmark Results


    相关文章