Go
Go sync.Pool and the Mechanics Behind It
Instead of just throwing these objects after each use, which would only give the garbage collector more work, we stash them in a pool (sync.Pool
). The next time we need something similar, we just grab it from the pool instead of making a new one from scratch.
Go Maps Explained: How Key-Value Pairs Are Actually Stored
Map is a built-in type that acts as a key-value storage. Unlike arrays where you’re stuck with keys as increasing indices like 0, 1, 2, and so on, with maps, the key can be any comparable type.
Go sync.Mutex: Normal and Starvation Mode
Mutex in Go has two main flows: Lock and Unlock and 2 modes: Normal and Starvation Mode. The state field of mutex is a 32-bit integer that represents the current state, it’s divided into multiple bits that encode various pieces of information about the mutex.
How Go Arrays Work and Get Tricky with For-Range
As always, we’ll start with the basics and then dig a bit deeper. Don’t worry, Go arrays get pretty interesting when you look at them from different angles. Arrays in Go are a lot like those in other programming languages. They’ve got a fixed size and store elements of the same type in contiguous memory locations.
Golang Defer: From Basic To Traps
The defer statement actually has 3 types: open-coded defer, heap-allocated defer, and stack-allocated. Each one has different performance and different scenarios where they’re best used, which is good to know if you want to optimize performance.
Vendoring, or go mod vendor: What Is It?
Vendoring is a different strategy as it keeps a copy of all your project’s dependencies directly within the project’s directory, rather than relying on an external cache.
Performance optimization techniques in time series databases: sync.Pool for CPU-bound operations
This blog post is the fourth in the series of blog posts based on the talk about ‘Performance optimizations in Go’, GopherCon 2023. It is dedicated to various optimization techniques used in VictoriaMetrics for improving performance and resource usage.
Performance optimization techniques in time series databases: Limiting concurrency
This blog post is a third in the series of the blog posts based on the talk about ‘Performance optimizations in Go’, GopherCon 2023. It is dedicated to various optimization techniques used in VictoriaMetrics for improving performance and resource usage.
Performance optimization techniques in time series databases: function caching
This blog post is a second in the series of the blog posts based on the talk about ‘Performance optimizations in Go’, GopherCon 2023. It is dedicated to various optimization techniques used in VictoriaMetrics for improving performance and resource usage.
Performance optimization techniques in time series databases: strings interning
This blog post is a first in the series of the blog posts based on the talk about ‘Performance optimizations in Go’, GopherCon 2023. It is dedicated to various optimization techniques used in VictoriaMetrics for improving performance and resource usage.