PinnedStatic and non-static interface member calls in .NET: they are not the sameA comparison of the mechanisms behind interface method invocations in .NETFeb 3, 2023Feb 3, 2023
Linux process priorities for C# devsThe article describes the Windows and the Linux priority models, and explains how the .NET priority API in implemented on both platforms.Dec 27, 2024Dec 27, 2024
Tracing allocations with EventPipe part 3 — Tracing without dotnet-traceUsing DiagnosticsClient internal code to replace dotnet-trace in order to implement a real time, lightweight allocation detectorSep 15, 2024Sep 15, 2024
Tracing allocations with EventPipe part 2 — Reading call stacks without TraceLogUncovering TraceLog call stack resolving and hacking TraceEvent to implement a real time, lightweight allocation detectorJul 30, 2024A response icon1Jul 30, 2024A response icon1
Tracing allocations with EventPipe part 1 — dotnet-trace and TraceLogUsing dotnet-trace to run automatic allocation detection on an event-sourced applicationJul 24, 2024Jul 24, 2024
Disruptor and Tasks — Why you can have async event handlersThe .NET Disruptor is finally integrating Task-based APIs!Oct 5, 2022Oct 5, 2022
Disruptor and Tasks — Why you cannot have async event handlersC# 5 introduced the async / await keywords, popularizing the usage of the Task type and increasing the interest in asynchronous…Dec 16, 2021Dec 16, 2021
Benchmarking Adventures Part 1 — Avoiding boxingMicro-optimizations in a one-line methodAug 6, 2019Aug 6, 2019
Improving .NET Disruptor performance — Part 3: Introducing the ValueDisruptorThis is the third part of a series of posts on the .NET Disruptor performance: - Part 1. - Part 2.Aug 27, 2018Aug 27, 2018
Testing without mockingThis article is a response to a question by @jrobertoaraujo from my previous post. Here is an excerpt of the question:Jun 26, 2018Jun 26, 2018