A curated list of Awesome Go performance libraries and tools

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.

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.

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.

Storage

  • stringbank - Storing strings without GC overhead.

Testing

Articles

Other

  • templexxx/tsc - Get unix time (nanoseconds) in 8ns, 10x faster than stdlib.
Owner
Oleg Kovalov
still I can't believe it's me
Oleg Kovalov
Comments
  • add fiber project to network section

    add fiber project to network section

    Please check if what you want to add to awesome-go-perf list meets quality standards before sending pull request. Thanks!

    Make sure that you've checked the boxes below before you submit PR:

    • [*] I have added my package in alphabetical order.
    • [*] I have an appropriate description with correct grammar.
    • [*] I know that this package was not listed before.
    • [*] I'm adding a project that has value and isn't based only on my own opinion.
    • [*] This project/library/tool will or may improve performance in a special case.
  • Add gnet

    Add gnet

    Please check if what you want to add to awesome-go-perf list meets quality standards before sending pull request. Thanks!

    Make sure that you've checked the boxes below before you submit PR:

    • [x] I have added my package in alphabetical order.
    • [x] I have an appropriate description with correct grammar.
    • [x] I know that this package was not listed before.
    • [x] I'm adding a project that has value and isn't based only on my own opinion.
    • [x] This project/library/tool will or may improve performance in a special case.
  • Add Pyroscope to the list of awesome tools

    Add Pyroscope to the list of awesome tools

    Please check if what you want to add to awesome-go-perf list meets quality standards before sending pull request. Thanks!

    Make sure that you've checked the boxes below before you submit PR:

    • [x] I have added my package in alphabetical order.
    • [x] I have an appropriate description with correct grammar.
    • [x] I know that this package was not listed before.
    • [x] I'm adding a project that has value and isn't based only on my own opinion.
    • [ ] This project/library/tool will or may improve performance in a special case.
  • Add Parca Open-Source profiler

    Add Parca Open-Source profiler

    Please check if what you want to add to awesome-go-perf list meets quality standards before sending pull request. Thanks!

    Make sure that you've checked the boxes below before you submit PR:

    • [ ] I have added my package in alphabetical order.
    • [x] I have an appropriate description with correct grammar.
    • [x] I know that this package was not listed before.
    • [x] I'm adding a project that has value and isn't based only on my own opinion.
    • [ ] This project/library/tool will or may improve performance in a special case.
  • Add fasthttp

    Add fasthttp

    Please check if what you want to add to awesome-go-perf list meets quality standards before sending pull request. Thanks!

    Make sure that you've checked the boxes below before you submit PR:

    • [x] I have added my package in alphabetical order.
    • [x] I have an appropriate description with correct grammar.
    • [x] I know that this package was not listed before.
    • [x] I'm adding a project that has value and isn't based only on my own opinion.
    • [x] This project/library/tool will or may improve performance in a special case.
Machine Learning libraries for Go Lang - Linear regression, Logistic regression, etc.

package ml - Machine Learning Libraries ###import "github.com/alonsovidales/go_ml" Package ml provides some implementations of usefull machine learnin

Nov 10, 2022
CLI Task manager TODOs List

Project Name CLI Task Manager TODOs List Index Information Tecnologies Instalation Environment Starting Tests Information CLI tool that can be used to

Feb 10, 2022
This is a tool to interact with Apigee APIs. The tool lets you manage (create, del, get, list) environments, proxies, etc.

apigeecli This is a tool to interact with Apigee APIs for Apigee hybrid and Apigee's managed offering. The tool lets you manage (Create,Get, List, Upd

Dec 3, 2022
A collection of basic tools that make working with polynomials easier in Go

PolyGo A collection of basic tools that make working with polynomials easier in

Dec 8, 2022
A high performance go implementation of Wappalyzer Technology Detection Library

wappalyzergo A high performance port of the Wappalyzer Technology Detection Library to Go. Inspired by https://github.com/rverton/webanalyze. Features

Jan 8, 2023
A high-performance timeline tracing library for Golang, used by TiDB

Minitrace-Go A high-performance, ergonomic timeline tracing library for Golang. Basic Usage package main import ( "context" "fmt" "strcon

Nov 28, 2022
A highly flexible blockchain architecture with great transaction performance.
A highly flexible blockchain architecture with great transaction performance.

XuperChain 中文说明 What is XuperChain XuperChain, the first open source project of XuperChain Lab, introduces a underlying solution to build the super al

Jan 2, 2023
The open source, end-to-end computer vision platform. Label, build, train, tune, deploy and automate in a unified platform that runs on any cloud and on-premises.
The open source, end-to-end computer vision platform. Label, build, train, tune, deploy and automate in a unified platform that runs on any cloud and on-premises.

End-to-end computer vision platform Label, build, train, tune, deploy and automate in a unified platform that runs on any cloud and on-premises. onepa

Dec 12, 2022
Go types, funcs, and utilities for working with cards, decks, and evaluating poker hands (Holdem, Omaha, Stud, more)

cardrank.io/cardrank Package cardrank.io/cardrank provides a library of types, funcs, and utilities for working with playing cards, decks, and evaluat

Dec 25, 2022
Genetic Algorithm and Particle Swarm Optimization

evoli Genetic Algorithm and Particle Swarm Optimization written in Go Example Problem Given f(x,y) = cos(x^2 * y^2) * 1/(x^2 * y^2 + 1) Find (x,y) suc

Dec 22, 2022
k-modes and k-prototypes clustering algorithms implementation in Go

go-cluster GO implementation of clustering algorithms: k-modes and k-prototypes. K-modes algorithm is very similar to well-known clustering algorithm

Nov 29, 2022
Probability distributions and associated methods in Go

godist godist provides some Go implementations of useful continuous and discrete probability distributions, as well as some handy methods for working

Sep 27, 2022
On-line Machine Learning in Go (and so much more)

goml Golang Machine Learning, On The Wire goml is a machine learning library written entirely in Golang which lets the average developer include machi

Jan 5, 2023
Bayesian text classifier with flexible tokenizers and storage backends for Go

Shield is a bayesian text classifier with flexible tokenizer and backend store support Currently implemented: Redis backend English tokenizer Example

Nov 25, 2022
Training materials and labs for a "Getting Started" level course on COBOL

COBOL Programming Course This project is a set of training materials and labs for COBOL on z/OS. The following books are available within this reposit

Dec 30, 2022
Deploy, manage, and scale machine learning models in production
Deploy, manage, and scale machine learning models in production

Deploy, manage, and scale machine learning models in production. Cortex is a cloud native model serving platform for machine learning engineering teams.

Dec 30, 2022
The Go kernel for Jupyter notebooks and nteract.
The Go kernel for Jupyter notebooks and nteract.

gophernotes - Use Go in Jupyter notebooks and nteract gophernotes is a Go kernel for Jupyter notebooks and nteract. It lets you use Go interactively i

Dec 30, 2022
Library for multi-armed bandit selection strategies, including efficient deterministic implementations of Thompson sampling and epsilon-greedy.
Library for multi-armed bandit selection strategies, including efficient deterministic implementations of Thompson sampling and epsilon-greedy.

Mab Multi-Armed Bandits Go Library Description Installation Usage Creating a bandit and selecting arms Numerical integration with numint Documentation

Jan 2, 2023
A program that generates a folder structure with challenges and projects for mastering a programming language.

Challenge Generator A program that generates a folder structure with challenges and projects for mastering a programming language. Explore the docs »

Aug 31, 2022