Looking for benchmarking volunteers

Edit: Post removed since the C library relies on SSE2. Will reopen and post once I got a cross-arch package available.

I want to perform some further tests with blake2b implementation in C. This means that you need to compile the package for your platform. I am more or less interested in the benchmarks on weaker devices (especially ARM’s and RPI’s). This requires go and gcc

The instructions are as follows:

mkdir -p /tmp/src/github.com/AudriusButkevicius/blake2b-opt
cd /tmp/src/github.com/AudriusButkevicius/blake2b-opt
curl -L -O https://github.com/AudriusButkevicius/blake2b-opt/archive/master.tar.gz
tar -zxvf master.tar.gz --strip-components=1
./configure
cat /tmp/src/github.com/AudriusButkevicius/blake2b-opt/framework/include/asmopt.h > /tmp/benchmark.log
make install-lib util
go build blake2b.go
./bin/blake2b-util bench >> /tmp/benchmark.log 

mkdir -p /tmp/src/github.com/AudriusButkevicius/gohashcompare
cd /tmp/src/github.com/AudriusButkevicius/gohashcompare
curl -L -O https://github.com/AudriusButkevicius/gohashcompare/archive/master.tar.gz
tar -zxvf master.tar.gz --strip-components=1
export GOPATH=/tmp

go build --ldflags '-extldflags "-static"' ./main.go
./main >> /tmp/benchmark.log 

Afterwards, provide content of /tmp/benchmark.log here or ideally upload it to some pastebin. Furthermore, you can help us by providing the following file: /tmp/src/github.com/AudriusButkevicius/blake2b-opt/bin/blake2b.lib by uploading it somewhere, but please also provide the name of your device.

Here the benchmark.log and blake2b.lib from my raspberry pi (model B 512MB) and my netbook (Intel Atom N450, 64bit but pretty slow) http://alex-graf.de/public/st/benchmark.zip

Saving people the need to download it themselves:

RPI B 512MB:

Build: go1.4 linux-arm

Blake2b CGO 512     200	   8344897 ns/op  15.71 MB/s     320 B/op       2 allocs/op
SHA512		     30	  38897250 ns/op   3.37 MB/s      64 B/op       1 allocs/op
SHA256		    100	  22712797 ns/op   5.77 MB/s      32 B/op       1 allocs/op

Intel Atom N450:

Build: go1.4 linux-amd64

SHA256		     500   3335126 ns/op  39.30 MB/s      32 B/op       1 allocs/op
SHA512		    1000   2258643 ns/op  58.03 MB/s      64 B/op       1 allocs/op
Blake2b CGO 512-2   2000   1033368 ns/op 126.84 MB/s     320 B/op       2 allocs/op

Thanks for the benchmarks.

http://davidak.de/tmp/Benchmark.zip

Ubuntu 12.04 VM (64-Bit), 4x Intel Xeon E5520 @ 2.27GHz, 990 MB RAM

Build: go1.1.1 linux-amd64

SHA256-4	     500	   2438435 ns/op	  53.75 MB/s	      32 B/op	       1 allocs/op
SHA512-4	    1000	   1440279 ns/op	  91.00 MB/s	      64 B/op	       1 allocs/op
Blake2b CGO 512-4	    5000	    358430 ns/op	 365.68 MB/s	     386 B/op	       3 allocs/op

elementary OS (Ubuntu 14.04 based) VM (64-Bit) with 8x 2,6GHz (Intel Core i7), 4 GB RAM

Build: go1.2.1 linux-amd64

SHA256-8	    2000	   1206111 ns/op	 108.67 MB/s	      32 B/op	       1 allocs/op
SHA512-8	    2000	    817385 ns/op	 160.36 MB/s	      64 B/op	       1 allocs/op
Blake2b CGO 512-8	   10000	    228387 ns/op	 573.90 MB/s	     384 B/op	       3 allocs/op

elementary OS (Ubuntu 12.04 based) (32-Bit) with 2x 3,16GHz (Intel Core 2 Duo E8500), 4 GB RAM

Build: go1.1.1 linux-386

SHA256-2	    1000	   2646573 ns/op	  49.53 MB/s	      32 B/op	       1 allocs/op
SHA512-2	     500	   4801462 ns/op	  27.30 MB/s	      64 B/op	       1 allocs/op
Blake2b CGO 512-2	   10000	    307482 ns/op	 426.27 MB/s	     387 B/op	       3 allocs/op

i had to install build-essential and golang from PPA: https://stackoverflow.com/questions/17480044/how-to-install-the-current-version-of-go-in-ubuntu

Raspberry Pi B with 700MHz and 256MB RAM

Build: go1.4 linux-arm

SHA256	      50	  27734445 ns/op	   4.73 MB/s	      32 B/op	       1 allocs/op
SHA512	      30	  52249703 ns/op	   2.51 MB/s	      64 B/op	       1 allocs/op
Blake2b CGO 512	     100	  10274646 ns/op	  12.76 MB/s	     320 B/op	       2 allocs/op

i had to use an unnoficial build of go: http://dave.cheney.net/unofficial-arm-tarballs http://tip.golang.org/doc/install

@AudriusButkevicius What value is important? The MB/s?

Compare Hashing Performance.ods (19.4 KB)

We see that Blake2b is much faster than SHA256 on every platform.

I guess you can just do go run main.go to be honest.

Yes MB/s defines how fast we can crunch through the files.

9 posts were split to a new topic: Faster hashing package