/awesome-go-perf

A curated list of Awesome Go performance libraries and tools

Creative Commons Zero v1.0 UniversalCC0-1.0

Awesome Go performance

Collection of the Awesome™ Go libraries, tools, project around performance.

Contents

Algorithm

Assembly

Benchmarks

  • benchstat - Benchstat computes and compares statistics about benchmarks.
  • go-benchrun - Convenience wrapper around "go test" + "benchstat".

Compiling

  • gcassert - Assert your Go code is inlined and bounds-check eliminated.

Concurrency

  • grmon - Command line monitoring for goroutines.
  • drwmutex - Distributed RWMutex in Go.

Crypto

  • md5-simd - Accelerate aggregated MD5 hashing performance up to 8x for AVX512 and 4x for AVX2.

GC

  • gcnotifier - Know when GC runs from inside your golang code.

Hardware

  • klauspost/cpuid - Provides information about the CPU running the current program.

Hash

IO

Math

  • fastdiv - Fast division, modulus and divisibility checks in Go for divisors known only at runtime.

Network

  • fasthttp - Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http.
  • fiber - Fiber is an Express inspired web framework built on top of Fasthttp, the fastest HTTP engine for Go. Designed to ease things up for fast development with zero memory allocation and performance in mind.
  • gnet - high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go. Ranks #10 in TechEmpower Plaintext Benchmark, beating all other go frameworks.
  • yerden/dpdk - Go bindings for DPDK framework

Profiling

  • profefe - Continuous profiling data collecting.
  • google/pprof - pprof is a tool for visualization and analysis of profiling data.
  • felixge/fgprof - a sampling Go profiler that allows you to analyze On-CPU as well as Off-CPU (e.g. I/O) time together.
  • parca - Parca is a continuous profiling project for applications and infrastructure, built with Go for Go.

Storage

  • stringbank - Storing strings without GC overhead.

Testing

Articles

Other

  • templexxx/tsc - Get unix time (nanoseconds) in 8ns, 10x faster than stdlib.
  • wuid - Extremely fast unique number generator