Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/adamsitnik/awesome-dot-net-performance

A curated list of awesome .NET Performance books, courses, trainings, conference talks, blogs and most inspiring open source contributors. Inspired by awesome-... stuff.
https://github.com/adamsitnik/awesome-dot-net-performance

List: awesome-dot-net-performance

Last synced: 20 days ago
JSON representation

A curated list of awesome .NET Performance books, courses, trainings, conference talks, blogs and most inspiring open source contributors. Inspired by awesome-... stuff.

Awesome Lists containing this project

README

        

# Awesome .NET Performance
A curated list of awesome .NET Performance books, courses, trainings, conference talks, blogs and most inspiring open source contributors. Inspired by awesome-... stuff.

- [Awesome .NET Performance](#awesome-dot-net-performance)
- [Books](#books)
- [Video Courses](#video-courses)
- [On-Site Trainings](#on-site-trainings)
- [Upcoming conferences](#upcoming-conferences)
- [Conference Talks](#conference-talks)
- [Blogs](#blogs)
- [Inspiring Open Source Contributors](#inspiring-open-source-contributors)
- [Performance tools](#performance-tools)
- Article series
- [Benchmarking](#benchmarking)
- [Monitoring](#monitoring)
- [Investigations](#investigations)
- [Debugging performances series by Tess Ferrandez](#debugging-performances-series-by-tess-ferrandez)
- [JIT Optimizations](#jit-optimizations)
- [Refs](#refs)
- [Threading](#threading)
- [Memory](#memory)
- [.NET CPU Intrinsics](#net-cpu-intrinsics)
- [Performance Improvements in .NET Core](#performance-improvements-in-net-core)
- [ARM64](#arm64)

## Books

* [Pro .NET Performance: Optimize Your C# Applications](https://www.amazon.com/dp/1430244585) by Sasha Goldshtein, Dima Zurbalev, Ido Flatow (2012)
* [Pro .NET Memory Management: For Better Code, Performance, and Scalability](https://prodotnetmemory.com) by Konrad Kokosa (2018)
* [Pro .NET Benchmarking: The Art of Performance Measurement](https://aakinshin.net/prodotnetbenchmarking/) by Andrey Akinshin (2019)
* [CLR via C#](https://www.amazon.com/dp/0735667454) by Jeffrey Richter (2012)
* [Pro Asynchronous Programming with .NET](https://www.amazon.com/dp/1430259205) by Richard Blewett, Andrew Clymer (2013)
* [Writing High-Performance .NET Code](https://www.amazon.com/dp/0990583457) by Ben Watson (2018)
* [Advanced .NET Debugging](https://www.amazon.com/dp/0321578899) by Mario Hewardt (2009)
* [Concurrent Programming on Windows](https://www.amazon.com/dp/032143482X) by Joe Duffy (2008)
* [.NET IL Assembler](https://www.amazon.com/dp/1430267615) by Serge Lidin (2014)
* [High-Performance Windows Store Apps](https://www.amazon.com/dp/0735682631) by Brian Rasmussen (2014)
* [Customizing the Microsoft® .NET Framework Common Language Runtime](https://www.amazon.com/dp/0735619883) by Steven Pratschner (2005)
* [Under the Hood of .NET Memory Management](https://www.red-gate.com/library/under-the-hood-of-net-memory-management) by Chris Farrell and Nick Harrison (2011)
* [Functional Concurrency in .NET](https://www.manning.com/books/functional-concurrency-in-dotnet) by Riccardo Terrell (2018)

## Video Courses

* [Mastering .NET Performance Tuning](https://wintellectnow.com/Home/SeriesDetail?seriesId=mastering-dotnet-performance-tuning) by John Robbins
* [Using Threads Effectively to Build Scalable, Responsive, and Fast .NET Applications and Components](https://wintellectnow.com/Home/SeriesDetail?seriesId=using-threads-effectively-to-build-scalable-responsive-and-fast-dotnet-applications-and-components) by Jeffrey Richter
* [Making .NET Applications Faster](https://www.pluralsight.com/courses/making-dotnet-applications-faster) by Sasha Goldshtein
* [Making .NET Applications Even Faster](https://www.pluralsight.com/courses/making-dotnet-applications-even-faster) by Sasha Goldshtein
* [Measuring .NET Performance](https://app.pluralsight.com/library/courses/measuring-dotnet-performance) by Sasha Goldshtein
* [PerfView Tutorial](https://channel9.msdn.com/Series/PerfView-Tutorial) by Vance Morrison
* [Defrag Tools - Perf View](https://channel9.msdn.com/Search?term=%22Defrag%20Tools%22%20%2B%20%22PerfView%22#ch9Search) by Vance Morrison
* [High Performance Coding with .NET Core and C#](https://www.udemy.com/high-performance-coding-with-net-core-and-csharp/) by Gergely Kalapos
* Defrag tools about CLR GC [part 1](https://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-33-CLR-GC-Part-1) [part 2](https://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-34-CLR-GC-Part-2) [part 3](https://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-35-CLR-GC-Part-3) and [part 4](https://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-36-CLR-GC-Part-4) with Maoni Stephens
* [.NET Async Expert](https://asyncexpert.com/) by Dotnetos
* [.NET Memory Expert](https://dotnetmemoryexpert.com/) by Dotnetos
* [.NET Diagnostics Expert](https://diagnosticsexpert.com/) by Dotnetos

## On-Site Trainings

* [.NET Performance and Debugging Workshop](http://scc.sela.co.il/Syl/Syllabus/Info?courseCode=DNWSH&branchName=165) by SELA (Israel)
* [.NET Performance](https://scc.sela.co.il/Syl/syllabus/info?coursecode=50153&branchname=165) by SELA (Israel)
* [Asynchronous Computing and Composing Asynchronous and Event-Based](https://scc.sela.co.il/Syl/syllabus/info?coursecode=RXTDF&branchname=165) by SELA (Israel)
* [Parallel Programming with the TPL](https://scc.sela.co.il/Syl/Syllabus/info?coursecode=DNParallel&branchname=165) by SELA (Israel)
* [Solid Async in .NET](http://www.rocksolidknowledge.com/Courses/SolidAsync) by Rock Solid Knowledge (UK)
* [Mastering .NET Performance Tuning](https://training.atmosera.com/course/mastering-net-performance-tuning/) by Wintellect (USA)
* [Mastering .NET Threading](https://training.atmosera.com/course/mastering-net-threading/) by Wintellect (USA)

## Upcoming conferences
* 2021
* [Dotnetos - .NET Performance World](https://conf.dotnetos.org) - Two-day conference dedicated solely to .NET performance! (05-06 October 2021, Online)

## Conference talks

Sorted from newest to oldest:
* 2021
* [Background type preloading and MultiCoreJit in .NET 6](https://www.youtube.com/watch?v=L7_DJSeeUoY) by Gleb Balykov (15.09.2021, Samsung Open Source Conference Russia)
* 2020
* [Running .NET Core performance investigation on Linux](https://www.youtube.com/watch?v=y4-h3qyDpJo) by Adam Sitnik (20.11.2020, DotNext)
* [What's so hard about pinning?](https://www.youtube.com/watch?v=troNdmHEu2g) by Maoni Stephens, (28.09.2020, Dotnetos Conference)
* [The Art of Tracing](https://www.youtube.com/watch?v=ktUDQrgg0-E) by Sebastian Solnica (01.10.2020, Dotnetos Conference)
* [Performance Improvements in .NET 5](https://www.youtube.com/watch?v=Ehvr9wXJNEM) by Stephen Toub (02.10.2020, Dotnetos Conference)
* [Beating CoreCLR's own C++ code with CoreCLR 3.0 intrinsics](https://www.youtube.com/watch?v=ug_UC4lxMr8) by Dan Shechter (10.03.2020, DotNext)
* [From ETW to EventPipe](https://www.youtube.com/watch?v=Jpoy3O6x-wM) by Christophe Nasarre-Soulier (10.03.2020, DotNext)
* 2019
* [What the game industry taught me about performance](https://vimeo.com/372255674) by Brian Rasmussen, (10.11.2019, Øredev)
* [Compiling and Running a PHP on .NET Core](https://www.youtube.com/watch?v=nb6H84Y5fag) by Jakub Míšek, (11.10.2019, Dotnetos Conference)
* [Ethereum performance in .NET Core](https://www.youtube.com/watch?v=jtv2TzaZ594) by Tomasz Stanczak, Piotr Gankiewicz, (11.10.2019, Dotnetos Conference)
* [To ORM or not to ORM](https://www.youtube.com/watch?v=SUXqvh5T2T8) by Łukasz Dziekan, (11.10.2019, Dotnetos Conference)
* [Writing Allocation Free Code in C#](https://www.youtube.com/watch?v=bMmuSXx5vsQ) by Matt Ellis, (11.10.2019, Dotnetos Conference)
* [Cliff diving into async in .NET Core and C# 8](https://www.youtube.com/watch?v=fcLcWwSEJUQ) by Daniel Marbach, (11.10.2019, Dotnetos Conference)
* [Performance Testing](https://www.youtube.com/watch?v=5S8c3j2HFpY) by Andrey Akinshin, (10.10.2019, Dotnetos Conference)
* [How Entity Framework translates LINQ all the way to SQL](https://www.youtube.com/watch?v=r69ZxXgOIK4) by Shay Rojansky, (10.10.2019, Dotnetos Conference)
* [.NET Intrinsics in CoreCLR 3.0](https://www.youtube.com/watch?v=M6HaSvifxwQ) by Dan Schechter, (10.10.2019, Dotnetos Conference)
* [The .NET Garbage Collector](https://www.youtube.com/watch?v=LPcjSdob9AA) by Peter Sollich, (10.10.2019, Dotnetos Conference)
* [.NET Performance Investigation](https://www.youtube.com/watch?v=y4HV5m5GR7o) by Adam Sitnik, (10.10.2019, Dotnetos Conference)
* [Performance in the .NET Runtime](https://www.youtube.com/watch?v=9l8EOQV1Yws) by Matt Warren, (10.10.2019, Dotnetos Conference)
* [Spanification](https://www.youtube.com/watch?v=THXG5jv0BrU) by Adam Sitnik (09.09.2019, Update Conference Prague)
* [Debugging asynchronous scenarios in .NET](https://www.youtube.com/watch?v=8Ans2u4Bsi8) by Kevin Gosse, Christophe Nasarre (16.08.2019, DotNext)
* [Building your own profiling and diagnosis tools with Event Tracing for Windows](https://www.youtube.com/watch?v=gBkvAO02qUY) by Pavel Yosifovich (16.08.2019, DotNext)
* [JIT and AOT in the CLR](https://www.youtube.com/watch?v=PS36qjpPRaY) by Mei-Chin Tsai (30.07.2019, JVM Language Summit)
* [Powerful benchmarking in .NET](https://www.youtube.com/watch?v=pdcrSG4tOLI) by Adam Sitnik (09.07.2019, Update Conference Prague)
* [What’s new for performance in .NET Core and ASP.NET Core 3.0](https://www.youtube.com/watch?v=bIfolJJJWqs) by Ben Adams (08.07.2019, .NET Core Summer Event)
* [Ref struct, ref readonly struct, ref returning, ref everything!](https://www.youtube.com/watch?v=bYBbhqvC26Y) by Konrad Kokosa (04.06.2019, DotNext)
* [Building responsive and scalable applications](https://www.youtube.com/watch?v=xGSabgBo-S8) by Jeffrey Richter (26.03.2019, DotNext)
* [Make your custom .NET GC — "whys" and "hows"](https://www.youtube.com/watch?v=om8YFyTO5ik) by Konrad Kokosa (18.03.2019, DotNext)
* [Extend the new WinDbg to build your own dream debugging tool](https://www.youtube.com/watch?v=tSlFd0CIo0g) by Kevin Gosse (18.03.2019, DotNext)
* [Tuning a Runtime for Both Productivity and Performance](https://www.infoq.com/presentations/net-runtime-architecture/) by Mei-Chin Tsai (26.02.2019, QCon)
* 2018
* [Efficient Buffer Manipulation using C# 7.2's Span](https://www.youtube.com/watch?v=gWcyXGIbRDI) by Jeffrey Richter (28.11.2018, SPB .NET Meetup)
* [Building your own debugging toolbox with ClrMD](https://www.youtube.com/watch?v=NsAYan7jlGE) by Christophe Nasarre (28.11.2018, DotNext)
* [Scratched metal](https://www.youtube.com/watch?v=eB_S9lQ4c4I) by Federico Lois (26.10.2018, DotNext)
* [PerfView: The Ultimate .NET Performance Tool](https://www.youtube.com/watch?v=qGEeZZBwVp4) by Sasha Goldshtein (27.08.2018, QCon)
* [Advanced .NET debugging techniques from a real world investigation](https://www.youtube.com/watch?v=tGXegMmIZ2s) by Christophe Nasarre & Kevin Gosse (21.08.2018, DotNext)
* [Patterns for high-performance C#](https://www.youtube.com/watch?v=7GTpwgsmHgU) by Federico Lois (08.02.2018, DotNext)
* 2017
* [What's new for performance in .NET Core 2.0](https://www.youtube.com/watch?v=eOdhWTX3Ajk) by Ben Adams (2017.11.09, CORESTART 2.0)
* [State of the .NET Performance](https://www.youtube.com/watch?v=CSPSvBeqJ9c) by Adam Sitnik (2017.07.05, NDC)
* [Look Mommy, No GC!](https://www.youtube.com/watch?v=G49baWvzCOI) by Dina Goldshtein (2017.03.23, NDC)
* [Squeezing the Hardware to Make Performance Juice](https://www.youtube.com/watch?v=5jKLVGI3B4g) by Sasha Goldshtein (2017.03.17, DotNext)
* [Performance tuning Stack Overflow tags](https://www.youtube.com/watch?v=bd5WYql5vlg) by Marco Cecconi (2017.03.17, DotNext)
* [Multithreading Deep Dive](https://www.youtube.com/watch?v=z2QYa2RW9c8) by Gael Fraiteur (2017.03.17, DotNext)
* [Stack Overflow — It's all about performance!](https://www.youtube.com/watch?v=9_pluQPfbBk) by Marco Cecconi (2017.03.17, DotNext)
* [ETW — Monitor Anything, Anytime, Anywhere](https://www.youtube.com/watch?v=s213p-zB7G4) by Dina Goldshtein (2017.03.17, DotNext)
* [Exceptional Exceptions in .NET](https://youtu.be/U92Ts53win4?t=1786) by Adam Sitnik (2017.03.17, DotNext)
* 2016
* [PerfView: Measure and Improve Your App's Performance For Free](https://www.youtube.com/watch?v=eX644hod65s) by Sasha Goldshtein (2016.11.02, DotNext)
* [The C++ and CLR Memory Models](https://www.youtube.com/watch?v=6wZVpg2SyJQ) by Sasha Goldshtein (2016.11.02, DotNext)
* [Safe Systems Programming in C# and .NET](https://www.infoq.com/presentations/csharp-systems-programming) by Joe Duffy (2016.08.20, QCon)
* [ASP.NET Core Kestrel: Adventures in building a fast web server](https://www.youtube.com/watch?v=kej3YJDMAW4) by Damian Edwards & David Fowler (2016.08.12, NDC)
* [Performance and How to Measure It](https://www.infoq.com/presentations/dot-net-performance) by Matt Warren (2016.07.28, ProgSCon)
* [Performance Optimizations in the Wild](https://www.youtube.com/watch?v=WuDy3rgGG2Q) by Oren Eini (Ayende) (2016.06.23, NDC)
* [The Vector in Your CPU: Exploiting SIMD for Superscalar Performance](https://www.youtube.com/watch?v=WeJ8b3WRSmM) by Sasha Goldshtein (2016.04.19, DotNext)
* [Lessons in Extreme .NET Performance](https://www.infoq.com/presentations/bing-net-performance) by Ben Watson (2016.03.13, QCon)
* Older
* [Making .NET applications faster](https://www.youtube.com/watch?v=jz3SvJhdtEw) by Sasha Goldshtein (2015.10.30, DevWeek)
* [The zen of async: Best practices for best performance](https://channel9.msdn.com/Events/Build/BUILD2011/TOOL-829T) by Stephen Toub (2011.09.13, Build)

## Blogs

* [Maoni Stephens](https://devblogs.microsoft.com/dotnet/author/maoni/)
* [Stephen Toub](https://devblogs.microsoft.com/dotnet/author/toub/)
* [Matt Warren](http://mattwarren.org)
* [Andrey Akinshin](http://aakinshin.net)
* [Dan Shechter](https://bits.houmus.org/)
* [Egor Bogatov](https://egorbo.com/)
* [Oren Eini aka Ayende](https://ayende.com/blog)
* [Alexandre Mutel aka xoofx](http://xoofx.com/blog)
* [Vladimir Sadov](http://mustoverride.com/)
* [Adam Sitnik](http://adamsitnik.com)
* [Konrad Kokosa](http://tooslowexception.com/)
* [Kunal Pathak](https://kunalspathak.github.io/)

## Inspiring Open Source Contributors

* [Ben Adams](https://github.com/benaadams)
* [Jan Kotas](https://github.com/jkotas)
* [Stephen Toub](https://github.com/stephentoub)
* [Kunal Pathak](https://github.com/kunalspathak)
* [mikedn](https://github.com/mikedn)
* [Tanner Gooding](https://github.com/tannergooding)
* [Vladimir Sadov](https://github.com/VSadov)
* [Dan Shechter](https://github.com/damageboy)
* [Egor Bogatov](https://github.com/EgorBo)
* [Federico Andres Lois](https://github.com/redknightlois)
* [Konrad Kokosa](https://github.com/kkokosa)
* [nietras](https://github.com/nietras)

## Performance tools
### Benchmarking
* [BenchmarkDotNet](https://github.com/PerfDotNet/BenchmarkDotNet) - Powerful .NET library for benchmarking.
* [NBench](https://github.com/petabridge/NBench) - Cross-platform performance benchmarking and testing framework for .NET applications.
* [CsCheck Faster](https://github.com/AnthonyLloyd/CsCheck#performance-testing) - Random data range, multithreaded, cross-platform/machine, unit testing integrated, relative performance testing.
### Profiling
* [Prefix](http://stackify.com/prefix) - Free lightweight profiler for ASP.NET apps shows everything your code is doing across 30+ common libraries
* [MiniProfiler](https://miniprofiler.com/dotnet/) - Free profiling tool for .NET applications with Entity Framework and ASP.Net integration (Core supported for both versions)
* [dotTrace](https://www.jetbrains.com/profiler/) - Paid profiler for .NET applications from the JetBrains team, included in the Resharper Ultimate package
* [Unchase.FluentPerformanceMeter](https://github.com/unchase/Unchase.FluentPerformanceMeter) - Free open-source and cross-platform .Net Standard 2.0 library that is designed for the method’s performance measurement
* [codetrack](https://www.getcodetrack.com/) - Free .NET performance profiler and execution analyzer
### Application Insights
* [App Metrics](https://github.com/alhardy/AppMetrics) - App Metrics is an open-source and cross-platform .NET library used to record and report metrics within an application and reports it's health. See the docs for [more](https://alhardy.github.io/app-metrics-docs/getting-started/intro.html) details.
### Analyzers
* [Clr Heap Allocation Analyzer](https://marketplace.visualstudio.com/items?itemName=MukulSabharwal.ClrHeapAllocationAnalyzer) Clr Heap Allocation Analyzer is a Roslyn based Diagnostic Analyzer that is able to detect most allocations in code in the local method and bring them to your attention in Visual Studio.
### Load Testing
* [NBomber](https://github.com/PragmaticFlow/NBomber) A lightweight framework for writing load tests to use on any PULL or PUSH system (HTTP, WebSockets, GraphQl, gRPC, SQL Databse, MongoDb, Redis etc). Dynamic CLI output, report generation, and trend analysis. Written in F# and targeting .NET Core and full .NET Framework.
* [JMeter DLS](https://abstracta.github.io/jmeter-dotnet-dsl/) A simple API for JMeter that enables using you IDE to design and run test using .NET.

## Article series

### Benchmarking
* [Microbenchmark Design Guidelines](https://github.com/dotnet/performance/blob/master/docs/microbenchmark-design-guidelines.md) by Adam Sitnik
* [The Art of Benchmarking](http://mattwarren.org/2014/09/19/the-art-of-benchmarking/) by Matt Warren
* [Adventures in Benchmarking - Memory Allocations](http://mattwarren.org/2016/02/17/adventures-in-benchmarking-memory-allocations/) by Matt Warren
* [Micro-Benchmarking Done Wrong, And For The Wrong Reasons](https://web.archive.org/web/20190813030251/http://blogs.microsoft.co.il/sasha/2012/06/22/micro-benchmarking-done-wrong-and-for-the-wrong-reasons/) by Sasha Goldshtein
* [On ‘stackalloc’ Performance and The Large Object Heap](https://web.archive.org/web/20190908190013/http://blogs.microsoft.co.il/sasha/2013/10/17/on-stackalloc-performance-and-the-large-object-heap/) by Sasha Goldshtein
* [Micro-Benchmarking Considered Harmful](https://web.archive.org/web/20190818002513/http://blogs.microsoft.co.il/sasha/2009/05/08/micro-benchmarking-considered-harmful/) by Sasha Goldshtein
* [On Measuring Performance](https://web.archive.org/web/20190814051906/http://blogs.microsoft.co.il/sasha/2007/12/27/on-measuring-performance/) by Sasha Goldshtein
* [Stopwatch under the hood](http://aakinshin.net/en/blog/dotnet/stopwatch/) by Andrey Akinshin
* [DateTime under the hood](http://aakinshin.net/en/blog/dotnet/datetime/) by Andrey Akinshin
* [Benchmarking made easy](http://blogs.msmvps.com/jonskeet/2009/01/26/benchmarking-made-easy/) by Jon Skeet
* [Simple microbenchmarking in C#](https://jonskeet.uk/csharp/benchmark.html) by Jon Skeet
* [Acquiring high-resolution time stamps](https://msdn.microsoft.com/library/windows/desktop/dn553408.aspx)
* [Performance exercise: Minimum](http://aakinshin.net/en/blog/dotnet/perfex-min/) by Andrey Akinshin
* [Performance exercise: Division](http://aakinshin.net/en/blog/dotnet/perfex-div/) by Andrey Akinshin
* [Measuring Performance Improvements in .NET Core with BenchmarkDotNet (Part 1)](http://aakinshin.net/blog/post/stephen-toub-benchmarks-part1/) by Andrey Akinshin
* [AWS Lambda — Container Image .NET Benchmark](https://blog.kloia.com/aws-lambda-container-image-net-benchmark-cb39fd0d211f) by İren Saltalı

### Monitoring
* [Performance Counters Hell](http://labs.criteo.com/2018/04/performance-counters-hell/) by Criteo Labs
* [Replace .NET performance counters by CLR event tracing](http://labs.criteo.com/2018/06/replace-net-performance-counters-by-clr-event-tracing/) by Criteo Labs
* [Grab ETW Session, Providers and Events](http://labs.criteo.com/2018/07/grab-etw-session-providers-and-events/) by Criteo Labs
* [Monitor Finalizers, contention and threads in your application](http://labs.criteo.com/2018/09/monitor-finalizers-contention-and-threads-in-your-application/) by Criteo Labs
* [In-process CLR event listeners with .NET Core 2.2](https://medium.com/criteo-labs/c-in-process-clr-event-listeners-with-net-core-2-2-ef4075c14e87) by Christophe Nasarre
* [Spying on .NET Garbage Collector with TraceEvent](https://medium.com/criteo-labs/spying-on-net-garbage-collector-with-traceevent-f49dc3117de) by Christophe Nasarre

### Investigations
* [High-performance .NET by example: Filtering bot traffic](https://alexandrnikitin.github.io/blog/high-performance-dotnet-by-example/) by Alexandr Nikitin
* [RyuJIT and the never-ending ThreadAbortException](http://labs.criteo.com/2017/04/ryujit-never-ending-threadabortexception/) by Criteo Labs
* [9 posts about how to build your own toolbox with ClrMD](http://labs.criteo.com/2017/12/clrmd-part-9-deciphering-tasks-thread-pool-items/) by Criteo Labs
* [.NET Threadpool starvation, and how queuing makes it worse](http://labs.criteo.com/2018/10/net-threadpool-starvation-and-how-queuing-makes-it-worse/) by Criteo Labs
* [Get-process-name challenge on a Friday afternoon](https://medium.com/criteo-labs/get-process-name-challenge-on-a-friday-afternoon-304a93bccdd1) by Christophe Nasarre
* [In managed code we trust, our recent battles with the .NET Garbage Collector](https://samsaffron.com/archive/2011/10/28/in-managed-code-we-trust-our-recent-battles-with-the-net-garbage-collector) by Sam Saffron
* [Tuning performance on Azure websites using remote profiling](https://blog.elmah.io/tuning-performance-on-azure-websites-using-remote-profiling/) by Thomas Ardal

### Debugging performances series by Tess Ferrandez

* [All .NET Debugging Demos: Hang, Crash, memory, and CPU ](https://www.tessferrandez.com/tags/#labs)
* [Reader email: Need help troubleshooting perf/memory issues](https://www.tessferrandez.com/blog/2010/12/06/reader-email-need-help-troubleshooting-perf-memory-issues.html)
* [Debugging a classic ReaderWriterLock deadlock with SOSex.dll](https://www.tessferrandez.com/blog/2010/04/27/debugging-a-classic-readerwriterlock-deadlock-with-sosex.html)
* [New commands in SOS for .NET 4.0 Part 1](https://www.tessferrandez.com/blog/2010/03/01/new-commands-in-sos-for-net40-part1.html)
* [High CPU in .NET app using a static Generic.Dictionary](https://www.tessferrandez.com/blog/2009/12/21/high-cpu-in-net-app-using-a-static-generic-dictionary.html)
* [.NET Hang Case study: The danger of locking on strings](https://www.tessferrandez.com/blog/2009/10/19/net-hang-case-study-the-danger-of-locking-on-strings.html)
* [First step in troubleshooting complex issues: Define and scope your issue properly](https://www.tessferrandez.com/blog/2009/09/09/first-step-in-troubleshooting-complex-issues.html)
* [Show me the memory: Tool for visualizing virtual memory usage and GC heap usage.](https://www.tessferrandez.com/blog/2009/04/23/show-me-the-memory.html)
* [.NET Memory Leak reader email: Are you really “leaking” .net memory](https://www.tessferrandez.com/blog/2009/02/27/are-you-really-leaking-net-memory.html)
* [.NET Memory Leak: To dispose or not to dispose, that’s the 1 GB question](https://www.tessferrandez.com/blog/2009/02/03/net-memory-leak-to-dispose-or-not-to-dispose-thats-the-1gb-question.html)

### JIT Optimizations
* [Loop alignment in .NET](https://kunalspathak.github.io/2021-03-15-Loop-Alignment/) by Kunal Pathak
* [RyuJIT Tutorial](https://github.com/dotnet/runtime/blob/main/docs/design/coreclr/jit/ryujit-tutorial.md) by Carol Eidt
* [JIT Optimizations](http://www.codeproject.com/Articles/25801/JIT-Optimizations) by Sasha Goldshtein
* [JIT Optimizations, Inlining, and Interface Method Dispatching (Part 1 of N)](http://blogs.microsoft.co.il/sasha/2007/02/27/jit-optimizations-inlining-and-interface-method-dispatching-part-1-of-n/) by Sasha Goldshtein
* [JIT Optimizations, Inlining, and Interface Method Dispatching (Part 2 of N)](http://blogs.microsoft.co.il/sasha/2007/08/12/jit-optimizations-inlining-and-interface-method-dispatching-part-2-of-n/) by Sasha Goldshtein
* [Performance differences between debug and release builds](http://stackoverflow.com/questions/4043821/performance-differences-between-debug-and-release-builds/4045073#4045073) by Hans Passant
* [Aggressive Inlining in the CLR 4.5 JIT](http://blogs.microsoft.co.il/sasha/2012/01/20/aggressive-inlining-in-the-clr-45-jit/) by Sasha Goldshtein
* [Jit Optimizations: Inlining (I)](https://blogs.msdn.microsoft.com/davidnotario/2004/10/28/jit-optimizations-inlining-i/) by David Notario
* [Jit Optimizations: Inlining (II)](https://blogs.msdn.microsoft.com/davidnotario/2004/11/01/jit-optimizations-inlining-ii/) by David Notario
* [More on inlining…](https://blogs.msdn.microsoft.com/ericgu/2004/01/29/more-on-inlining/) by Eric Gunnerson
* [To Inline or not to Inline: That is the question](https://blogs.msdn.microsoft.com/vancem/2008/08/19/to-inline-or-not-to-inline-that-is-the-question/) by Vance Morrison
* [Some Notes on Using Machine Learning to Develop Inlining Heuristics](https://github.com/AndyAyersMS/PerformanceExplorer/blob/master/notes/notes-aug-2016.md) by Andy Ayers
* [The JIT does dead-code elimination in Debuggable code](http://blogs.msdn.com/b/jmstall/archive/2006/03/13/dead-code-elimination.aspx) by Mkie Stall
* [Does the JIT take advantage of my CPU?](https://blogs.msdn.microsoft.com/davidnotario/2005/08/15/does-the-jit-take-advantage-of-my-cpu/) by David Notario
* [Unrolling of small loops in different JIT versions](http://aakinshin.net/en/blog/dotnet/unrolling-of-small-loops-in-different-jit-versions/) by Andrey Akinshin
* [RyuJIT CTP5 and loop unrolling](http://aakinshin.net/en/blog/dotnet/ryujit-ctp5-and-loop-unrolling/) by Andrey Akinshin
* [RyuJIT RC and constant folding](http://aakinshin.net/en/blog/dotnet/ryujit-rc-and-constant-folding/) by Andrey Akinshin
* [A story about JIT-x86 inlining and starg](http://aakinshin.net/en/blog/dotnet/inlining-and-starg/) by Andrey Akinshin
* [LegacyJIT-x86 and first method call](http://aakinshin.net/en/blog/dotnet/legacyjitx86-and-first-method-call/) by Andrey Akinshin
* [Do PDB Files Affect Performance?](http://devcenter.wintellect.com/jrobbins/do-pdb-files-affect-performance) by John Robbins
* [What does the optimize switch do?](https://blogs.msdn.microsoft.com/ericlippert/2009/06/11/what-does-the-optimize-switch-do/) by Eric Lippert
* [Hoisting in .NET Explained (part 1)](https://alexandrnikitin.github.io/blog/hoisting-in-net-explained/) by Alexandr Nikitin
* [Hoisting in .NET Examples (part 2)](https://alexandrnikitin.github.io/blog/hoisting-in-net-examples/) by Alexandr Nikitin

### Refs
* [ref returns are not pointers](http://mustoverride.com/refs-not-ptrs/) by Vladimir Sadov
* [managed pointers](http://mustoverride.com/managed-refs-CLR/) by Vladimir Sadov
* [Local variables cannot be returned by reference](http://mustoverride.com/ref-returns-and-locals/) by Vladimir Sadov
* [Safe to return rules for ref returns](http://mustoverride.com/safe-to-return/) by Vladimir Sadov
* [Why ref locals allow only a single binding?](http://mustoverride.com/ref-locals_single-assignment/) by Vladimir Sadov
* [ref returns and locals](https://adamsitnik.com/ref-returns-and-ref-locals/) by Adam Sitnik

### Threading
* [An Introduction to System.Threading.Channels](https://devblogs.microsoft.com/dotnet/an-introduction-to-system-threading-channels/) by Stephen Toub
* [ConfigureAwait FAQ](https://devblogs.microsoft.com/dotnet/configureawait-faq/) by Stephen Toub
* [Threading in C#](http://www.albahari.com/threading/) by Joseph Albahari

### Memory
* [.NET Memory Performance Analysis](https://github.com/Maoni0/mem-doc) by Maoni Stephens
* [GC Perf Infrastructure – Part 1](https://devblogs.microsoft.com/dotnet/gc-perf-infrastructure-part-1/) by Maoni Stephens
* [GC Perf Infrastructure – Part 0](https://devblogs.microsoft.com/dotnet/gc-perf-infrastructure-part-0/) by Maoni Stephens
* [The history of the GC configs](https://devblogs.microsoft.com/dotnet/the-history-of-the-gc-configs/) by Maoni Stephens
* [Finalization implementation details](https://devblogs.microsoft.com/dotnet/finalization-implementation-details/) by Maoni Stephens
* [A portable way to get GC events in process and no admin privilege with 10 lines of code (and ability to dynamically enable/disable events)](https://devblogs.microsoft.com/dotnet/a-portable-way-to-get-gc-events-in-process-and-no-admin-privilege-with-10-lines-of-code-and-ability-to-dynamically-enable-disable-events/) by Maoni Stephens
* [Making CPU configuration better for GC on machines with > 64 CPUs](https://devblogs.microsoft.com/dotnet/making-cpu-configuration-better-for-gc-on-machines-with-64-cpus/) by Maoni Stephens
* [Running with Server GC in a Small Container Scenario Part 1 – Hard Limit for the GC Heap](https://devblogs.microsoft.com/dotnet/running-with-server-gc-in-a-small-container-scenario-part-1-hard-limit-for-the-gc-heap/) by Maoni Stephens
* [Running with Server GC in a Small Container Scenario Part 0](https://devblogs.microsoft.com/dotnet/running-with-server-gc-in-a-small-container-scenario-part-0/) by Maoni Stephens
* [You Should Never See This Callstack in Production](https://devblogs.microsoft.com/dotnet/you-should-never-see-this-callstack-in-production/) by Maoni Stephens
* [Middle Ground between Server and Workstation GC](https://devblogs.microsoft.com/dotnet/middle-ground-between-server-and-workstation-gc/) by Maoni Stephens
* [Pooling large arrays with ArrayPool](https://adamsitnik.com/Array-Pool/) by Adam Sitnik
* [Value Types vs Reference Types](https://adamsitnik.com/Value-Types-vs-Reference-Types/) by Adam Sitnik
* [Span](https://adamsitnik.com/Span/) by Adam Sitnik

### .NET CPU Intrinsics
* [Vectorization using .NET APIs](https://kunalspathak.github.io/2020-08-01-Vectorization-APIs/) by Kunal Pathak
* [Hardware Intrinsics in .NET Core](https://devblogs.microsoft.com/dotnet/hardware-intrinsics-in-net-core/) by Tanner Gooding
* [Exploring .NET Core platform intrinsics: Part 1 - Accelerating SHA-256 on ARMv8](https://mijailovic.net/2018/06/06/sha256-armv8/) by Nemanja Mijailovic
* [Exploring .NET Core platform intrinsics: Part 2 - Accelerating AES encryption on ARMv8](https://mijailovic.net/2018/06/18/aes-armv8/) by Nemanja Mijailovic
* [Exploring .NET Core platform intrinsics: Part 3 - Viewing the code generated by the JIT](https://mijailovic.net/2018/07/05/generated-code/) by Nemanja Mijailovic
* [Exploring .NET Core platform intrinsics: Part 4 - Alignment and pipelining](https://mijailovic.net/2018/07/20/alignment-and-pipelining/) by Nemanja Mijailovic
* [.NET Core 3.0 Intrinsics in Real Life - 1/3](https://bits.houmus.org/2018-08-18/netcoreapp3.0-intrinsics-in-real-life-pt1) by damageboy
* [.NET Core 3.0 Intrinsics in Real Life - 2/3](https://bits.houmus.org/2018-08-19/netcoreapp3.0-intrinsics-in-real-life-pt2) by damageboy
* [.NET Core 3.0 Intrinsics in Real Life - 3/3](https://bits.houmus.org/2018-08-20/netcoreapp3.0-intrinsics-in-real-life-pt3) by damageboy
* [Decimating Array.Sort with AVX2 - 1/∞](https://bits.houmus.org/2020-01-28/this-goes-to-eleven-pt1) by damageboy
* [Decimating Array.Sort with AVX2 - 2/∞](https://bits.houmus.org/2020-01-29/this-goes-to-eleven-pt2) by damageboy
* [Decimating Array.Sort with AVX2 - 3/∞](https://bits.houmus.org/2020-01-30/this-goes-to-eleven-pt3) by damageboy

### Performance Improvements in .NET Core
* [Performance Improvements in .NET 9](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-9/) by Stephen Toub
* [Performance Improvements in .NET 8](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8/) by Stephen Toub
* [Performance Improvements in .NET 7](https://devblogs.microsoft.com/dotnet/performance_improvements_in_net_7/) by Stephen Toub
* [Performance Improvements in .NET 6](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-6/) by Stephen Toub
* [Regex Performance Improvements in .NET 5](https://devblogs.microsoft.com/dotnet/regex-performance-improvements-in-net-5/) by Stephen Toub
* [Performance Improvements in .NET 5](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/) by Stephen Toub
* [Performance Improvements in .NET Core 3.0](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-core-3-0/) by Stephen Toub
* [Performance Improvements in .NET Core 2.1](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-core-2-1/) by Stephen Toub
* [Performance Improvements in .NET Core](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-core/) by Stephen Toub

### ARM64
* [Arm64 Hardware Intrinsics APIs in .NET - Part 6](https://kunalspathak.github.io/2021-01-17-.NET-Hardware-Intrinsics-Part6/) by Kunal Pathak
* [Arm64 Hardware Intrinsics APIs in .NET - Part 5](https://kunalspathak.github.io/2020-12-05-.NET-Hardware-Intrinsics-Part5/) by Kunal Pathak
* [Arm64 Hardware Intrinsics APIs in .NET - Part 4](https://kunalspathak.github.io/2020-10-31-.NET-Hardware-Intrinsics-Part4/) by Kunal Pathak
* [Arm64 Hardware Intrinsics APIs in .NET - Part 3](https://kunalspathak.github.io/2020-10-03-.NET-Hardware-Intrinsics-Part3/) by Kunal Pathak
* [Arm64 Hardware Intrinsics APIs in .NET - Part 2](https://kunalspathak.github.io/2020-09-26-.NET-Hardware-Intrinsics-Part2/) by Kunal Pathak
* [Arm64 Hardware Intrinsics APIs in .NET - Part 1](https://kunalspathak.github.io/2020-09-19-.NET-Hardware-Intrinsics-Part1/) by Kunal Pathak
* [Peephole optimizations in .NET](https://kunalspathak.github.io/2020-08-08-ARM64-peephole-optimizations/) by Kunal Pathak
* [Memory barriers in ARM64](https://kunalspathak.github.io/2020-07-25-ARM64-Memory-Barriers/) by Kunal Pathak
* [ARM64 performance of .Net Core 5](https://kunalspathak.github.io/2020-07-04-Dotnet-Arm64-Performance/) by Kunal Pathak