/adventures-in-cgo-performance

Materials for my talk "Adventures in Cgo Performance"

Adventures in Cgo Performance

Abstract

Cgo is a powerful tool in the Go programmer’s arsenal. It allows Go programmers to interoperate with other languages. However, Cgo documentation is scarce and best practices for performance are hard to come by. In this tutorial session, I discuss lessons I've has learned working on the Go API for Wallaroo, a high-performance distributed stream processor written in Pony.

I cover hard-won knowledge about using Cgo in performance sensitive code including: ways in which Cgo makes interoperation with other languages difficult, how you can work around common sources of performance and scaling problems, and an issue with the Go runtime that can't be worked around.

Versions of this talk

Links

Blog posts by me on cgo

Wallaroo references

Learning cgo references

Cgo runtime references

Garbage Collecton and Go pointers references

Go atomics package related references

Additional References