xs/vendor/github.com/templexxx/xor
Russ Magee caac02a77b 1/2 Updated Makefile to allow VENDOR flag (adds -vendor to version string)
2/2 Added vendor/ dir to lock down dependent pkg versions.
The author of git.schwanenlied.me/yawning/{chacha20,newhope,kyber}.git has copied
their repos to gitlab.com/yawning/ but some imports of chacha20 from newhope still
inconsistently refer to git.schwanenlied.me/, breaking build.
Licenses for chacha20 also changed from CC0 to AGPL, which may or may not be an
issue. Until the two aforementioned issues are resolved, locking to last-good
versions is probably the best way forward for now.

To build with vendored deps, use make VENDOR=1 clean all
2020-01-29 13:55:38 -08:00
..
.gitattributes 1/2 Updated Makefile to allow VENDOR flag (adds -vendor to version string) 2020-01-29 13:55:38 -08:00
.gitignore 1/2 Updated Makefile to allow VENDOR flag (adds -vendor to version string) 2020-01-29 13:55:38 -08:00
LICENSE 1/2 Updated Makefile to allow VENDOR flag (adds -vendor to version string) 2020-01-29 13:55:38 -08:00
README.md 1/2 Updated Makefile to allow VENDOR flag (adds -vendor to version string) 2020-01-29 13:55:38 -08:00
avx2_amd64.s 1/2 Updated Makefile to allow VENDOR flag (adds -vendor to version string) 2020-01-29 13:55:38 -08:00
nosimd.go 1/2 Updated Makefile to allow VENDOR flag (adds -vendor to version string) 2020-01-29 13:55:38 -08:00
sse2_amd64.s 1/2 Updated Makefile to allow VENDOR flag (adds -vendor to version string) 2020-01-29 13:55:38 -08:00
xor.go 1/2 Updated Makefile to allow VENDOR flag (adds -vendor to version string) 2020-01-29 13:55:38 -08:00
xor_amd64.go 1/2 Updated Makefile to allow VENDOR flag (adds -vendor to version string) 2020-01-29 13:55:38 -08:00
xor_other.go 1/2 Updated Makefile to allow VENDOR flag (adds -vendor to version string) 2020-01-29 13:55:38 -08:00

README.md

XOR

XOR code engine in pure Go

more than 10GB/S per core

see: https://github.com/templexxx/xorsimd

Introduction:

  1. Use SIMD (SSE2 or AVX2) for speeding up
  2. ...

Installation

To get the package use the standard:

go get github.com/templexxx/xor

Documentation

See the associated GoDoc

Performance

Performance depends mainly on:

  1. SIMD extension
  2. unit size of worker
  3. hardware ( CPU RAM etc)

Example of performance on my MacBook 2014-mid(i5-4278U 2.6GHz 2 physical cores). The 16MB per shards.

speed = ( shards * size ) / cost
data_shards shard_size speed (MB/S)
2 1KB 64127.95
2 1400B 59657.55
2 16KB 35370.84
2 16MB 12128.95
5 1KB 78837.33
5 1400B 58054.89
5 16KB 50161.19
5 16MB 12750.41

Who is using this?

  1. https://github.com/xtaci/kcp-go -- A Production-Grade Reliable-UDP Library for golang