Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/eric-erki/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/eric-erki/awesome-dot-net-performance

List: awesome-dot-net-performance

Last synced: about 1 month 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)
- [High Performance Libraries](#high-performance-libraries)
- 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 Core 3.0 Intrinsics](#net-core-30-intrinsics)
- [Performance Improvements in .NET Core](#performance-improvements-in-net-core)

## Books

* [Pro .NET Performance: Optimize Your C# Applications](https://www.amazon.com/dp/1430244585) by Sasha Goldshtein, Dima Zurbalev, Ido Flatow
* [Pro .NET Memory Management: For Better Code, Performance, and Scalability](https://prodotnetmemory.com) by Konrad Kokosa
* [Pro .NET Benchmarking: The Art of Performance Measurement](https://aakinshin.net/prodotnetbenchmarking/) by Andrey Akinshin
* [CLR via C#](https://www.amazon.com/dp/0735667454) by Jeffrey Richter
* [Pro Asynchronous Programming with .NET](https://www.amazon.com/dp/1430259205) by Richard Blewett, Andrew Clymer
* [Writing High-Performance .NET Code](https://www.amazon.com/dp/0990583457) by Ben Watson
* [Advanced .NET Debugging](https://www.amazon.com/dp/0321578899) by Mario Hewardt
* [Concurrent Programming on Windows](https://www.amazon.com/dp/032143482X) by Joe Duffy
* [.NET IL Assembler](https://www.amazon.com/dp/1430267615) by Serge Lidin
* [High-Performance Windows Store Apps](https://www.amazon.com/dp/0735682631) by Brian Rasmussen
* [Customizing the Microsoft® .NET Framework Common Language Runtime](https://www.amazon.com/dp/0735619883) by Steven Pratschner
* [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
* [Functional Concurrency in .NET](https://www.manning.com/books/functional-concurrency-in-dotnet) by Riccardo Terrell

## 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

## On-Site Trainings

* [.NET Performance and Debugging Workshop](http://www.sela.co.il/syl/Syllabus.aspx?CourseCode=DNWSH&CategoryID=165) by SELA (Israel)
* [.NET Performance](http://www.sela.co.il/syl/Syllabus.aspx?CourseCode=50153&CategoryID=165) by SELA (Israel)
* [Asynchronous Computing and Composing Asynchronous and Event-Based](http://www.sela.co.il/syl/Syllabus.aspx?CourseCode=RXTDF&CategoryID=165) by SELA (Israel)
* [Parallel Programming with the TPL](http://www.sela.co.il/syl/Syllabus.aspx?CourseCode=ParallelWS&CategoryID=165) by SELA (Israel)
* [Solid Async in .NET](http://www.rocksolidknowledge.com/Courses/SolidAsync) by Rock Solid Knowledge (UK)
* [Mastering .NET Performance Tuning](http://wintellect.com/software-development-training/courses/mastering-net-performance-tuning) by Wintellect (USA)
* [Mastering .NET Threading](http://wintellect.com/software-development-training/courses/mastering-dotnet-threading) by Wintellect (USA)

## Upcoming conferences
* 2020
* [Dotnetos - .NET Performance World](https://conf.dotnetos.org) - Two-day conference dedicated solely to .NET performance! Both international and Polish speakers (all sessions in English). Chance to meet well-known people from .NET performance area in person. (01-02 October 2020, Warsaw)
## Conference talks

Sorted from newest to oldest:
* 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)
* [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://vimeo.com/171927596) 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/stephen_toubhotmail-com/)
* [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/)

## Inspiring Open Source Contributors

* [Ben Adams](https://github.com/benaadams)
* [Jan Kotas](https://github.com/jkotas)
* [Stephen Toub](https://github.com/stephentoub)
* [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.
### 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
### 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.

## High Performance Libraries
* Mathematics
* [MathNet](http://www.mathdotnet.com/) - Math.NET is an opensource initiative to build and maintain toolkits covering fundamental mathematics, targetting advanced but also every day needs of .Net developers.
* [Spreads](https://github.com/Spreads/Spreads) - "Series and Panels for Real-time and Exploratory Analysis of Data Streams", a library for fast time series incremental calculations + SIMD-optimized byte-shuffling/LZ4/Zstd compression using [Blosc](https://github.com/Blosc/c-blosc/) library.
* CPU Optimization
* [SIMD Array](https://github.com/jackmott/SIMDArray) - SIMD and other Performance enhanced Array operations for F#.
* [NativeInterop](https://bitbucket.org/frank_niemeyer/nativeinterop) - Generic pointers and native 64-bit arrays for .NET.
* IO Optimization
* [Nessos Streams](https://github.com/nessos/Streams) - A lightweight F#/C# library for efficient functional-style pipelines on streams of data.
* [Wire](https://github.com/AsynkronIT/Wire) - A high performance polymorphic serializer for the .NET framework.
* [Disruptor-Net](https://github.com/disruptor-net/Disruptor-net) - .NET port of LMAX Disruptor, a faster alternative to BlockingCollection.
* [MPMCQueue.NET](https://github.com/alexandrnikitin/MPMCQueue.NET) - Bounded multiple producers multiple consumers queue for .NET.
* Collections
* [ImTools](https://github.com/dadhi/ImTools) - Immutable persistent collections and helpers designed for [performance](https://gist.github.com/mrange/d6e7415113ebfa52ccb660f4ce534dd4) and simplicity of use.
* Parsing and Compiling
* [markdig](https://github.com/lunet-io/markdig) - Markdig is a fast, powerful, CommonMark compliant, extensible Markdown processor for .NET.
* [FastExpressionCompiler](https://github.com/dadhi/FastExpressionCompiler) - Fast [Expression Trees](https://msdn.microsoft.com/en-us/library/mt654263.aspx) compiler to delegate to compensate for slow `Expression.Compile()`.
* Inversion of Control frameworks
* [DryIoc](https://github.com/dadhi/DryIoc) - For the past years a [fastest](http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison) Dependency Injection library without sacrificing on [functionality](http://featuretests.apphb.com/DependencyInjection.html).
* [SimpleInjector](https://github.com/simpleinjector/SimpleInjector) - Fast Dependency Injection library that promotes best practice to steer developers towards the pit of success.

## 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](http://blogs.microsoft.co.il/sasha/2012/06/22/micro-benchmarking-done-wrong-and-for-the-wrong-reasons/) 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#](http://www.yoda.arachsys.com/csharp/benchmark.html) by Jon Skeet
* [Acquiring high-resolution time stamps](https://msdn.microsoft.com/library/windows/desktop/dn553408.aspx)
* [On ‘stackalloc’ Performance and The Large Object Heap](http://blogs.microsoft.co.il/sasha/2013/10/17/on-stackalloc-performance-and-the-large-object-heap/) by Sasha Goldshtein
* [Micro-Benchmarking Considered Harmful](http://blogs.microsoft.co.il/sasha/2009/05/08/micro-benchmarking-considered-harmful/) by Sasha Goldshtein
* [On Measuring Performance](http://blogs.microsoft.co.il/sasha/2007/12/27/on-measuring-performance/) by Sasha Goldshtein
* [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

### 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

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

### JIT Optimizations
* [RyuJIT Tutorial](https://github.com/dotnet/coreclr/blob/master/Documentation/botr/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
* [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 Core 3.0 Intrinsics
* [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

### Performance Improvements in .NET Core
* [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