Pearls: the protobuf’s discriminated union

Google Protocol Buffers is a proven protocol for serializing data efficiently. It has a wide adoption, enabling serialization for almost every platform, making the data easy to exchange between platforms. To store its schema, you can use .proto files, that enable describing messages in a platform agnostic format. You can see an example below: message … Continue reading Pearls: the protobuf’s discriminated union

.NET volatile write performance degradation in x86

TL;DR This is a summary of my investigation about writing a fast and well designed concurrent queue for which performance was drastically low for 32bit application. Take a look at PR here. If you're interested in writing a well performing no-alloc applications with mechanical symapthy in mind or you're simply interested in good .NET … Continue reading .NET volatile write performance degradation in x86

False sharing is dead, long live the Padded

False sharing is a common problem of multithreaded applications in .NET. If you allocate objects in/for different threads, they may land on the same cache line impacting the performance, limiting gains from scaling your app on a single machine. Unfortunately, because of the multithreaded nature of the RampUp library it's been suffering from the same … Continue reading False sharing is dead, long live the Padded