All Projects → go-perf → go-perftuner

go-perf / go-perftuner

Licence: MIT license
Helper tool for manual Go code optimization.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to go-perftuner

benchdiff
No description or website provided.
Stars: ✭ 41 (-63.06%)
Mutual labels:  benchmark
Hetero-Mark
A Benchmark Suite for Heterogeneous System Computation
Stars: ✭ 41 (-63.06%)
Mutual labels:  benchmark
godot-size-benchmarks
Benchmarks to compare Godot binary sizes with different build-time options
Stars: ✭ 36 (-67.57%)
Mutual labels:  benchmark
eCommerceSearchBench
E-commerce search benchmark is the first end-to-end application benchmark for e-commerce search system with personalized recommendations.This work is joint with Prof. Jianfeng Zhan (http://www.benchcouncil.org/zjf.html) 's team, who is also the chair of International Open Benchmark Council (BenchCouncil, http://www.benchcouncil.org/).
Stars: ✭ 29 (-73.87%)
Mutual labels:  benchmark
Language-Arena
C++ vs D vs Go benchmark
Stars: ✭ 19 (-82.88%)
Mutual labels:  benchmark
gtestx
A C++ benchmark extension for gtest
Stars: ✭ 19 (-82.88%)
Mutual labels:  benchmark
criterion
statistics-driven micro-benchmarking framework
Stars: ✭ 17 (-84.68%)
Mutual labels:  benchmark
text-style-transfer-benchmark
Text style transfer benchmark
Stars: ✭ 56 (-49.55%)
Mutual labels:  benchmark
bench
⏱️ Reliable performance measurement for Go programs. All in one design.
Stars: ✭ 33 (-70.27%)
Mutual labels:  benchmark
user-agent-parser-benchmarks
PHP User Agent Parser Benchmarks
Stars: ✭ 29 (-73.87%)
Mutual labels:  benchmark
Edge-Detection-project
Tiny Image in Javascript - Edge Detection Algorithms
Stars: ✭ 27 (-75.68%)
Mutual labels:  benchmark
sbt-jmh
"Trust no one, bench everything." - sbt plugin for JMH (Java Microbenchmark Harness)
Stars: ✭ 740 (+566.67%)
Mutual labels:  benchmark
CellBench
R package for benchmarking single cell analysis methods
Stars: ✭ 21 (-81.08%)
Mutual labels:  benchmark
scATAC-benchmarking
Benchmarking computational single cell ATAC-seq methods
Stars: ✭ 137 (+23.42%)
Mutual labels:  benchmark
Visual-Tracking-Development
Recent Trackers
Stars: ✭ 93 (-16.22%)
Mutual labels:  benchmark
touchstone
Smart benchmarking of pull requests with statistical confidence
Stars: ✭ 33 (-70.27%)
Mutual labels:  benchmark
yjit-bench
Set of benchmarks for the YJIT CRuby JIT compiler
Stars: ✭ 38 (-65.77%)
Mutual labels:  benchmark
stringbench
String matching algorithm benchmark
Stars: ✭ 31 (-72.07%)
Mutual labels:  benchmark
benchmark-http
No description or website provided.
Stars: ✭ 15 (-86.49%)
Mutual labels:  benchmark
container-orchestration
A Benchmark for Container Orchestration Systems
Stars: ✭ 19 (-82.88%)
Mutual labels:  benchmark

go-perftuner

build-img pkg-img reportcard-img coverage-img

Helper tool for manual Go code optimization.

This tool gives you an easy way to get the Go compiler output regarding specific optimisations. Like: function inlining, variable escape and bounds checks.

Notes

The original implementation was started by @quasilyte thanks to him 🎉 Than supported by @cristaloleg and now is part of go-perf organization.

Installation / Quick Start

# Install go-perftuner:
$ go get -u github.com/go-perf/go-perftuner

# Check installation (prints help):
$ go-perftuner help

# Run almostInlined sub-command on strings and bytes package:
$ go-perftuner almostInlined strings bytes

# You can use "std" or "..." package name.
# These follow "go build" conventions.
$ go-perftuner almostInlined std

Sub-commands

almostInlined

Find functions that cross inlining threshold just barely. You may use short command inl.

$ go-perftuner almostInlined -threshold=1 std
almostInlined: std: src/strconv/atof.go:371:6: atof64exact: budget exceeded by 1
almostInlined: std: src/strconv/atof.go:405:6: atof32exact: budget exceeded by 1
almostInlined: std: src/reflect/value.go:1199:6: Value.OverflowComplex: budget exceeded by 1
almostInlined: std: src/vendor/golang_org/x/crypto/cryptobyte/builder.go:77:6: (*Builder).AddUint16: budget exceeded by 1
almostInlined: std: src/crypto/x509/x509.go:1858:58: buildExtensions.func2.1.1: budget exceeded by 1
almostInlined: std: src/crypto/x509/x509.go:1878:58: buildExtensions.func2.3.1: budget exceeded by 1
almostInlined: std: src/crypto/x509/x509.go:1890:58: buildExtensions.func2.4.1: budget exceeded by 1
almostInlined: std: src/crypto/tls/handshake_messages.go:1450:6: (*newSessionTicketMsg).marshal: budget exceeded by 1
almostInlined: std: src/net/http/transfer.go:259:6: (*transferWriter).shouldSendContentLength: budget exceeded by 1

escapedVariables

Find variables that are escaped to the heap. You may use short command esc.

$ go-perftuner escapedVariables fmt
escapedVariables: fmt: src/fmt/format.go:73:13: make(buffer, cap(buf) * 2 + n)
escapedVariables: fmt: src/fmt/format.go:147:14: make([]byte, width)
escapedVariables: fmt: src/fmt/format.go:208:14: make([]byte, width)

boundChecks

Find slice/array that has bound check. You may use short command bce.

$ go-perftuner boundChecks fmt
boundChecks: fmt: src/fmt/format.go:82:16: slice/array has bound checks
boundChecks: fmt: src/fmt/format.go:157:10: slice/array has bound checks
boundChecks: fmt: src/fmt/format.go:159:22: slice/array has bound checks
boundChecks: fmt: src/fmt/format.go:161:10: slice/array has bound checks

License

MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].