List of #Awesome #golang performance tools and libs.
https://github.com/cristaloleg/awesome-go-perf
Feel free to submit more!
(and sorry for a long break:)
https://github.com/cristaloleg/awesome-go-perf
Feel free to submit more!
(and sorry for a long break:)
Old one, but still a good one.
How #golang map are implemented? by twitter.com/davecheney
https://dave.cheney.net/2018/05/29/how-the-go-runtime-implements-maps-efficiently-without-generics
How #golang map are implemented? by twitter.com/davecheney
https://dave.cheney.net/2018/05/29/how-the-go-runtime-implements-maps-efficiently-without-generics
What is a goroutine? And what is their size? by twitter.com/tpaschalis_ #golang
https://tpaschalis.github.io/goroutines-size/
https://tpaschalis.github.io/goroutines-size/
io_uring using #golang (liburing and CGo, to be exact)
by Agniva De Sarker https://github.com/agnivade (from twitter.com/Mattermost)
https://developers.mattermost.com/blog/hands-on-iouring-go/
Also don't forget to star pure Go solution https://github.com/hodgesds/iouring-go
(but hopefully https://github.com/golang/go/issues/31908 will be implemented in std)
by Agniva De Sarker https://github.com/agnivade (from twitter.com/Mattermost)
https://developers.mattermost.com/blog/hands-on-iouring-go/
Also don't forget to star pure Go solution https://github.com/hodgesds/iouring-go
(but hopefully https://github.com/golang/go/issues/31908 will be implemented in std)
Understanding CPU caches and whole CPU architecture with #golang by twitter.com/teivah
By the way, pretty beautiful illustrations!
https://medium.com/@teivah/go-and-cpu-caches-af5d32cc5592
By the way, pretty beautiful illustrations!
https://medium.com/@teivah/go-and-cpu-caches-af5d32cc5592
A sampling Go profiler that allows you to analyze On-CPU as well as Off-CPU (e.g. I/O) time together.
https://github.com/felixge/fgprof by twitter.com/felixge
And it's literally under 100 lines! Amazing!
https://github.com/felixge/fgprof by twitter.com/felixge
And it's literally under 100 lines! Amazing!
Building a high performance #golang JSON parser by twitter.com/davecheney
https://dave.cheney.net/high-performance-json.html
https://dave.cheney.net/high-performance-json.html
A Tale of Breadth-First Search by twitter.com/egonelbre at twitter.com/gopherconeu #golang
https://youtu.be/ulSlF2Phecg?list=PLtoVuM73AmsKnUvoFizEmvWo0BbegkSIG
https://youtu.be/ulSlF2Phecg?list=PLtoVuM73AmsKnUvoFizEmvWo0BbegkSIG
Proposal: Register-based #golang calling convention
https://go.googlesource.com/proposal/+/refs/changes/78/248178/1/design/40724-register-calling.md
https://go.googlesource.com/proposal/+/refs/changes/78/248178/1/design/40724-register-calling.md
Short note on #golang alloc size classes by twitter.com/offbymany
https://commaok.xyz/post/discovering-size-classes/
https://commaok.xyz/post/discovering-size-classes/
#golang Goroutine lifecycle by https://github.com/jcorbin
Writing this issue out of the @GopherCon 2019 contribution workshop (additional kudos to @golang workshops!)
(from issue https://github.com/golang/go/issues/33322 )
Writing this issue out of the @GopherCon 2019 contribution workshop (additional kudos to @golang workshops!)
(from issue https://github.com/golang/go/issues/33322 )
What a beautiful thing! In #golang 1.16 you can track how much time is spent in init() funcs! what a nice thing to have!
https://github.com/golang/go/issues/41378
https://github.com/golang/go/issues/41378
GitHub
runtime: add GODEBUG=inittrace=1 support Β· Issue #41378 Β· golang/go
Note: Like #38714 this is not a proposal for the proposal process. This issue is to discuss and track the addition of support for init function tracing through GODEBUG for ad hoc debugging and prof...
proposal: cmd/compile: switch to a register-based calling convention for #golang functions
Preliminary experiments indicate this will achieve at least a 5β10% throughput improvement across a range of applications
is accepted! π
https://go.googlesource.com/proposal/+/master/design/40724-register-calling.md
https://github.com/golang/go/issues/40724
Preliminary experiments indicate this will achieve at least a 5β10% throughput improvement across a range of applications
is accepted! π
https://go.googlesource.com/proposal/+/master/design/40724-register-calling.md
https://github.com/golang/go/issues/40724
GitHub
cmd/compile: switch to a register-based calling convention for Go functions Β· Issue #40724 Β· golang/go
I propose that we switch the Go internal ABI (used between Go functions) from stack-based to register-based argument and result passing for Go 1.16 1.17. I lay out the details of our proposal and t...
More #golang awesomness! Happening in 1.16 π
Go 1.16 will include an early devirtualization pass, which allows better escape analysis of interface method calls (i.e., fewer heap allocations) when the compiler can see the interface always has a known concrete type.
https://github.com/golang/go/issues/33160
https://twitter.com/mdempsky/status/1321894360116420608
Go 1.16 will include an early devirtualization pass, which allows better escape analysis of interface method calls (i.e., fewer heap allocations) when the compiler can see the interface always has a known concrete type.
https://github.com/golang/go/issues/33160
https://twitter.com/mdempsky/status/1321894360116420608
GitHub
cmd/compile: use devirtualization in escape analysis Β· Issue #33160 Β· golang/go
#19361 introduced devirtualization when the concrete type is known statically. This would be extremely useful to compensate for the unfortunate design of the hash.Hash functions, which make it impo...
Not a direct performance thing, but #golang
Thank you twitter.com/lukechampine for the article.
https://lukechampine.com/cond.html
sync.Cond
may make your concurrent work simpler (and faster too). Thank you twitter.com/lukechampine for the article.
https://lukechampine.com/cond.html
At the #golang North East meetup today
twitter.com/mvdan_
presented "Measuring Go's init performance cost". Here are graphs of the top 20 costs (bytes alloc and time) obtained by running:
GODEBUG=inittrace=1 go env GOARCH'
(this will be in Go 1.16, and available at tip now)
twitter.com/mvdan_
presented "Measuring Go's init performance cost". Here are graphs of the top 20 costs (bytes alloc and time) obtained by running:
GODEBUG=inittrace=1 go env GOARCH'
(this will be in Go 1.16, and available at tip now)
πΊπ¦ Go performance channel
At the #golang North East meetup today twitter.com/mvdan_ presented "Measuring Go's init performance cost". Here are graphs of the top 20 costs (bytes alloc and time) obtained by running: GODEBUG=inittrace=1 go env GOARCH' (this will be in Go 1.16, andβ¦
See also https://t.iss.one/go_perf/45
Telegram
Go performance channel
What a beautiful thing! In #golang 1.16 you can track how much time is spent in init() funcs! what a nice thing to have!
https://github.com/golang/go/issues/41378
https://github.com/golang/go/issues/41378
A story how twitter.com/srcgraph made their #golang backend faster
https://about.sourcegraph.com/blog/optimizing-a-code-intel-backend/
https://about.sourcegraph.com/blog/optimizing-a-code-intel-backend/
Hacked string interning profiler for #golang:
https://go-review.googlesource.com/c/go/+/277376
Allows to understand where to use interning & exact savings for heap size/garbage rate. May be useful for larger projects.
Yay or nay?
https://twitter.com/dvyukov/status/1337847667125313538
https://go-review.googlesource.com/c/go/+/277376
Allows to understand where to use interning & exact savings for heap size/garbage rate. May be useful for larger projects.
Yay or nay?
https://twitter.com/dvyukov/status/1337847667125313538
Twitter
Dmitry Vyukov
Hacked string interning profiler for #golang: https://t.co/EB2uJwzvtx Allows to understand where to use interning & exact savings for heap size/garbage rate. May be useful for larger projects. Yay or nay?
Even if it's a WIP, still worth to mention and follow π
Anyway string interning in #golang is a long-running topic and it's always interesting to see what is going on :)
Anyway string interning in #golang is a long-running topic and it's always interesting to see what is going on :)