sha256-simd
asm
sha256-simd | asm | |
---|---|---|
3 | 4 | |
984 | 868 | |
1.9% | -0.2% | |
1.0 | 0.0 | |
over 1 year ago | about 1 year ago | |
Go | Go | |
Apache License 2.0 | MIT No Attribution |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
sha256-simd
-
The Curious Case of MD5
BLAKE3 is faster than hardware accelerated SHA-2 because the tree mode used in BLAKE3 allows hashing parts of a single message in parallel (with SHA-2, parts of a single message have to be hashed one after another, and parallelism is only used in workloads where you process multiple messages at the same time).
https://github.com/minio/sha256-simd
https://github.com/BLAKE3-team/BLAKE3
-
Can I concatenate multiple non-crypto hash functions to reduce collision?
SHA256 is high quality but typically a bit slower. Next Go version will have faster SHA256 on some amd64 CPUs - until then you can try sha256-simd which offers the same.
-
I need to find a custom hexadecimal string that when encrypted starts with a certain specific hexadecimal string(77656e6f7469 in our case). I tried randomly generating strings encrpyting them and checking them, realized it would take too much time. Any help?
I am not sure, if you can achieve a reasonable speed with Python though. You probably have to use a compiled language or run it on GPU. I found this very fast implemenation in Go which uses special CPU instructions (the AVX2 or SHA extensionsm depending on your CPU model) to speed up the calculation: https://github.com/minio/sha256-simd
asm
-
Quickly checking that a string belongs to a small set
We took a similar approach in our JSON decoder. We needed to support sets (JSON object keys) that aren't necessarily known until runtime, and strings that are up to 16 bytes in length.
We got better performance with a linear scan and SIMD matching than with a hash table or a perfect hashing scheme.
See https://github.com/segmentio/asm/pull/57 (AMD64) and https://github.com/segmentio/asm/pull/65 (ARM64). Here's how it's used in the JSON decoder: https://github.com/segmentio/encoding/pull/101
-
Changing one character wildly improved our application's performance
OP here, the algorithms we use give us about 5-10x the performance of the standard library sort, even compared against the new pdqsort in Go 1.19. https://github.com/segmentio/asm/pull/77
- Go library providing algorithms optimized for modern CPUs
- Segmentio/asm – Go library of algorithms optimized to leverage modern CPUs
What are some alternatives?
xxh3 - XXH3 algorithm in Go
photoscope - Journey into photo management with golang
asm - Learning assembly for Linux x86_64
gperf - mirror of git.savannah.gnu.org/gperf.git with more features. gitlab has the issues
avo - Generate x86 Assembly with Go
tinyfont - Text library for TinyGo displays
encoding - Go package containing implementations of efficient encoding, decoding, and validation APIs.
faasd - A lightweight & portable faas engine
mycel - Rudimentary web browser written in Golang
nbperf - Improved NetBSD's Perfect Hash Generation Tool v3