guff-sharefiles 0.1.11

Package IDA-encoded data in a portable file format
# guff-sharefiles
Package IDA-encoded data in a portable file format

First version doesn't implement the sharefile format, but
it does enough to generate some benchmarks.

Create a file with 16 MBytes + 8 bytes.

```ascii
$ dd if=/dev/urandom bs=1024 count=16384 of=16m
$ echo "\0\0\0\0\0\0\0\0" >> 16m
```

Then build the project with all optimisations turned on:

```ascii
$ RUSTFLAGS="-O -C target-cpu=native -C target-feature=+ssse3,+sse4.1,+sse4.2,+avx" cargo build
```

Can then compare this program with the `rabin-split.pl` script from my
original Perl implementation (`Crypt::IDA` on CPAN):

```ascii
$ time rabin-split.pl  -k 8 -n 16 -w 1 16m     # Perl/C
$ time ./target/debug/ida-split 16m            # rust simd mul
$ time ./target/debug/ida-split -r 16m         # rust reference mul
```

Results:

| rabin-split.pl | rust simd     | rust reference |
|real  0m0.935s  | real	0m1.456s | real	0m1.687s  |
|user  0m0.874s  | user	0m1.220s | user	0m1.596s  |
|sys   0m0.060s  | sys	0m0.069s | sys	0m0.056s  |

Overall, only around 65% the speed of the original version, even though
it has less overheads (not writing file headers, not multipliying blocks
of the file) and should have a faster multiply kernel.

Still, not bad as a starting point...