]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
pyfec: add bragging about how fec is way faster than "par2"
authorZooko O'Whielacronx <zooko@zooko.com>
Sun, 15 Apr 2007 00:47:48 +0000 (17:47 -0700)
committerZooko O'Whielacronx <zooko@zooko.com>
Sun, 15 Apr 2007 00:47:48 +0000 (17:47 -0700)
pyfec/README.txt

index b8f70e1d3af0d59e506f29b700e14ae568d4953a..bb96d7c5dc8d283d741fa3a7df6923fb7b0b5c3e 100644 (file)
@@ -78,12 +78,12 @@ input to the encoding step.
 The bin/ directory contains two Unix-style, command-line tools "fec" and 
 "unfec".  Execute "fec --help" or "unfec --help" for usage instructions.
 
-Note: a Unix-style tool like "fec" does only one thing -- in this case erasure 
-coding -- and leaves other tasks to other tools.  Other Unix-style tools that 
-go well with "fec" include "GNU tar" for packaging up multiple files and 
-directories into one bundle, "rzip" for compression, and "GNU Privacy Guard" 
-for encryption.  It is best to do things in that order: first package, then 
-compress, then encrypt, then erasure code.
+Note: a Unix-style tool like "fec" does only one thing -- in this case
+erasure coding -- and leaves other tasks to other tools.  Other Unix-style
+tools that go well with "fec" include "GNU tar" for packaging up multiple
+files and directories into one bundle, "rzip" for compression, and "GNU
+Privacy Guard" for encryption.  It is important to do things in order: first
+package, then compress, then encrypt, then erasure code.
 
 
  * API
@@ -157,18 +157,30 @@ objects (e.g. Python strings) to hold the data that you pass to pyfec.
 
  * Utilities
 
-The filefec.py module which has a utility function for efficiently reading a
-file and encoding it piece by piece.
+The filefec.py module has a utility function for efficiently reading a file
+and encoding it piece by piece.  This module is used by the "fec" and "unfec"
+command-line tools from the bin/ directory.
 
 
  * Dependencies
 
-A C compiler is required.  For the Python API, we have tested it with Python
-v2.4 and v2.5.
+A C compiler is required.  To use the Python API or the command-line tools a
+Python interpreter is also required.  We have tested it with Python v2.4 and
+v2.5.
 
 
  * Performance Measurements
 
+On my Athlon 64 2.4 GHz workstation (running Linux), the "fec" command-line
+tool encoded a 160 MB file with m=100, k=94 (about 6% redundancy) in 3.9
+seconds, where the "par2" tool encoded the file with about 6% redundancy in
+27 seconds.  "fec" encoded the same file with m=12, k=6 (100% redundancy) in
+4.1 seconds, where par2 encoded it with about 100% redundancy in 7 minutes
+and 56 seconds.
+
+The underlying C library in benchmark mode encoded from a file at about 
+4.9 million bytes per second and decoded at about 5.8 million bytes per second.
+
 On Peter's fancy Intel Mac laptop (2.16 GHz Core Duo), it encoded from a file
 at about 6.2 million bytes per second.
 
@@ -178,10 +190,6 @@ at about 6.8 million bytes per second.
 On my old PowerPC G4 867 MHz Mac laptop, it encoded from a file at about 1.3
 million bytes per second.
 
-On my Athlon 64 2.4 GHz workstation (running Linux), it encoded from a file at
-about 4.9 million bytes per second and decoded at about 5.8 million bytes per
-second.
-
 
  * Acknowledgements