This post describes my work on trying to build a faster MemoryPool for .NET called Thruster. There are existing implementations, like the one provided by System.Memory or Kestrel, the new and shiny .NET web server. Let's see what approached did I take and how it ended. What is a MemoryPool? The memory pool is a … Continue reading Thruster, building a not so fast memory pool
Why are they still working on the whole async-await thing? What is Task, Async Await, ValueTask, IValueTaskSource ? How to keep your sanity in modern .NET world?
TL;DR This is a follow up post to Async pump for better throughput in Azure. Please read the first before moving forward. Feedback I've been given a lot of feedback about my Async pump post. In a few cases this blog post from Ayende was quoted as it describes exactly the same approach. You can … Continue reading Async programming model
This post is followed up by https://blog.scooletz.com/2017/02/20/async-programming-model TL;DR Introducing async-await has changed a lot. Now, with some compiler's help we're able to squeeze out more throughput from our machines, which may lower costs and increase throughput. In this blog post we'll push the boundaries even further by questioning the need of immediate awaiting on a … Continue reading Async pump for better throughput in Azure
TL;DR This is a summary of my investigation about writing a fast and well designed concurrent queue for akka.net 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
In the last post I've shown some optimizations one can apply to reduce the overhead on creating asynchronous state machines. Let's dive into the async world again and consider helper methods provided by the Task class, especially Task.WhenAll. The method works in a following way. It accepts an array of tasks and returns a task … Continue reading Task.WhenAll tests
What's the size of nullable structure in C#? Does it depends on anything? How fields are held in the memory. Let's consider following cases: bool?, int?, long?, Guid? One way to get the structure size is use of Marshal.SizeOf(Type). Unfortunately this method performs a check whether the passed type is generic. Every nullable is generic, … Continue reading Size of Nullable