mirror of https://gogs.blitter.com/RLabs/xs
caac02a77b
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 |
||
---|---|---|
.. | ||
.gitattributes | ||
.gitignore | ||
LICENSE | ||
README.md | ||
avx2_amd64.s | ||
nosimd.go | ||
sse2_amd64.s | ||
xor.go | ||
xor_amd64.go | ||
xor_other.go |
README.md
XOR
XOR code engine in pure Go
more than 10GB/S per core
see: https://github.com/templexxx/xorsimd
Introduction:
- Use SIMD (SSE2 or AVX2) for speeding up
- ...
Installation
To get the package use the standard:
go get github.com/templexxx/xor
Documentation
See the associated GoDoc
Performance
Performance depends mainly on:
- SIMD extension
- unit size of worker
- 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?
- https://github.com/xtaci/kcp-go -- A Production-Grade Reliable-UDP Library for golang