Home
About
Resources
Speaking
Posts by Tag
Posts by Year
Twitter
Github
Email
© 2020. All rights reserved.
Performance is a Feature!
Home
Archive
Speaking
Resources
About
Want to be notified when I write a new blog post?
2020 - 2 in Total
Analysing .NET start-up time with Flamegraphs
Under the hood of "Default Interface Methods"
2019 - 5 in Total
Research based on the .NET Runtime
"Stubs" in the .NET Runtime
ASCII Art in .NET Code
Is C# a low-level language?
"Stack Walking" in the .NET Runtime
2018 - 13 in Total
Exploring the .NET Core Runtime (in which I set myself a challenge)
Open Source .NET – 4 years later
A History of .NET Runtimes
Fuzzing the .NET JIT Compiler
Monitoring and Observability in the .NET Runtime
Presentations and Talks covering '.NET Internals'
.NET JIT and CLR - Joined at the Hip
Tools for Exploring .NET Internals
CoreRT - A .NET Runtime for AOT
Taking a look at the ECMA-335 Standard for .NET
Exploring the internals of the .NET Runtime
How generics were added to .NET
Resources for Learning about .NET Internals
2017 - 20 in Total
A look back at 2017
Open Source .NET – 3 years later
A look at the internals of 'Tiered JIT Compilation' in .NET Core
Exploring the BBC micro:bit Software Stack
Microsoft & Open Source a 'Brave New World' - CORESTART 2.0
A DoS Attack against the C# Compiler
DotNetAnywhere: An Alternative .NET Runtime
Analysing C# code on GitHub with BigQuery
A look at the internals of 'boxing' in the CLR
Memory Usage Inside the CLR
How the .NET Runtime loads a Type
Lowering in the C# Compiler (and what happens when you misuse it)
Adding a new Bytecode Instruction to the CLR
Arrays and the CLR - a Very Special Relationship
The CLR Thread Pool 'Thread Injection' Algorithm
The .NET IL Interpreter
A Hitchhikers Guide to the CoreCLR Source Code
The 68 things the CLR does before executing a single line of your code (*)
How do .NET delegates work?
Analysing Pause times in the .NET GC
2016 - 23 in Total
Why Exceptions should be Exceptional
Why is reflection slow?
Research papers in the .NET source
Open Source .NET – 2 years later
How does the 'fixed' keyword work?
Adding a verb to the dotnet CLI tooling
Optimising LINQ
Compact strings in the CLR
Subverting .NET Type Safety with 'System.Runtime.CompilerServices.Unsafe'
Analysing .NET Memory Dumps with CLR MD
Analysing Optimisations in the Wire Serialiser
Preventing .NET Garbage Collections with the TryStartNoGCRegion API
GC Pauses and Safe Points
How the dotnet CLI tooling runs your code
Visualising the .NET Garbage Collector
Strings and the CLR - a Special Relationship
Adventures in Benchmarking - Performance Golf
Coz: Finding Code that Counts with Causal Profiling - An Introduction
Adventures in Benchmarking - Method Inlining
Adventures in Benchmarking - Memory Allocations
Technically Speaking - Anniversary Mentoring
Learning How Garbage Collectors Work - Part 1
Open Source .NET – 1 year later - Now with ASP.NET
2015 - 3 in Total
Open Source .NET – 1 year later
The Stack Overflow Tag Engine – Part 3
The Stack Overflow Tag Engine – Part 2
2014 - 10 in Total
The Stack Overflow Tag Engine – Part 1
The Art of Benchmarking (Updated 2014-09-23)
Stack Overflow - performance lessons (part 2)
Stack Overflow - performance lessons (part 1)
How to mock sealed classes and static methods
Know thy .NET object memory layout (Updated 2014-09-03)
Measuring the impact of the .NET Garbage Collector - An Update
Measuring the impact of the .NET Garbage Collector
Roslyn code base - performance lessons (part 2)
Roslyn code base - performance lessons (part 1)