Pillar guide

Performance: a working guide for .NET developers

Updated May 06, 2026

This guide is the entry point for Performance on dotnetnews.co. It collects the writing we have curated on Performance into one page so you can orient yourself fast: what Performance is in working .NET projects today, why it matters, what to read next, and where teams keep tripping over the same problems.

If you want the full back-catalog, the Performance topic page lists every issue we have ever tagged with performance (currently 61 curated issues). This pillar narrows that down to the pieces that earn re-reading and threads them into a working narrative.

What Performance actually is in a working .NET project

In .NET teams we see in 2025 and 2026, Performance is rarely a single feature pulled off a shelf. It is a set of practices that touches your build, your test loop, and the way you describe your system to the next person who joins. It is also moving target: the .NET 8 -> .NET 10 cycle changed defaults, the C# language has shipped new sugar nearly every year, and the tooling around Performance has consolidated faster than most teams can keep up with.

That makes a curated reading map valuable. Most working developers do not have the cycles to read every release-notes post, every Azure devblog, and every Medium write-up. The .NET News Daily archive does that triage. This page lifts the most useful threads out of that archive and points to where to start.

If you are new to Performance or coming back after a long break, read the first three issues in the reading map below in order. They give you the current vocabulary plus a sense of where the rough edges live.

Why Performance matters for .NET teams in 2026

Three working observations from the curation work:

  • The defaults moved. What used to be ceremony in older .NET projects is now scaffolded out of the box, but only if you start a new project. Most teams are not on the latest scaffold; that’s where Performance questions surface.
  • The community absorbed Azure-shaped opinions. A lot of Performance writing in the last 18 months has been “this is how we did it on Azure” with the surrounding pattern still applicable everywhere. Read for the pattern, not the cloud.
  • The toolchain rewards small upgrades. Most teams that pay down a single Performance debt every release end up months ahead of teams that wait for a “big rewrite”. The reading map below is biased toward those small upgrades.

The pieces below were curated because they keep coming up in real conversations: PRs, retros, code reviews, and the kind of question that lands in a Slack channel at 4pm on a Friday.

Reading map: start here

The first three issues are the ones to read in order. The rest are good as you need them.

1. Issue #449 - C# / .NET Performance, C# / .NET, High

Start here (1 of 3). C# / .NET Performance, C# / .NET, High. Issue #449 of .NET News Daily for May 6, 2026. (2026-05-06)

2. Issue #448 - Cleaning Migrations in EF Core 10

Start here (2 of 3). Cleaning Migrations in EF Core 10. Issue #448 of .NET News Daily for May 5, 2026. (2026-05-05)

3. Issue #442 - Removing byte[] allocations in .NET Framework using ReadOnly

Start here (3 of 3). Removing byte[] allocations in .NET Framework using ReadOnly. Issue #442 of .NET News Daily for Apr 27, 2026. (2026-04-27)

4. Issue #437 - EF Core Query Performance, Testing Needs a Seam

EF Core Query Performance, Testing Needs a Seam. Issue #437 of .NET News Daily for Apr 20, 2026. (2026-04-20)

5. Issue #433 - How to Write Clean Code in C# Using Naming Conventions and B

How to Write Clean Code in C# Using Naming Conventions and B. Issue #433 of .NET News Daily for Apr 14, 2026. (2026-04-14)

6. Issue #432 - How to Add a Watermark to an Image in C# ?

How to Add a Watermark to an Image in C# ?. Issue #432 of .NET News Daily for Apr 13, 2026. (2026-04-13)

7. Issue #412 - Why IEnumerable Can Kill Performance in Hot Paths

Why IEnumerable Can Kill Performance in Hot Paths. Issue #412 of .NET News Daily for Mar 17, 2026. (2026-03-17)

8. Issue #399 - Federating Databases with Data API Builder Chaining

Federating Databases with Data API Builder Chaining. Issue #399 of .NET News Daily for Feb 25, 2026. (2026-02-25)

9. Issue #394 - Hands On with New Multi, C# 13 & .NET 9

Hands On with New Multi, C# 13 & .NET 9. Issue #394 of .NET News Daily for Feb 18, 2026. (2026-02-18)

10. Issue #380 - Beyond the Rewrite, String Performance

Beyond the Rewrite, String Performance. Issue #380 of .NET News Daily for Jan 29, 2026. (2026-01-29)

11. Issue #375 - Part 1, How to Improve Performance in C# Applications

Part 1, How to Improve Performance in C# Applications. Issue #375 of .NET News Daily for Jan 22, 2026. (2026-01-22)

12. Issue #373 - How to Build Android Widgets with .NET MAUI

How to Build Android Widgets with .NET MAUI. Issue #373 of .NET News Daily for Jan 20, 2026. (2026-01-20)

13. Issue #363 - MCP Development with .NET, C#, Cloud Run, and Gemini CLI

MCP Development with .NET, C#, Cloud Run, and Gemini CLI. Issue #363 of .NET News Daily for Jan 6, 2026. (2026-01-06)

14. Issue #362 - C# 14 Null, C# 14 More Partial Members

C# 14 Null, C# 14 More Partial Members. Issue #362 of .NET News Daily for Jan 5, 2026. (2026-01-05)

Looking for the rest? The full Performance archive lives on the Performance topic page.

Common pitfalls

Patterns we see across the curated archive when teams trip on Performance:

1. Treating Performance as a one-off project

The teams that handle Performance cleanly fold it into every release as small, ratcheting upgrades. Teams that defer it end up with a quarter-long tax. Several issues in the reading map above describe exactly this gap; the most recent one is a good five-minute read on the topic.

2. Reaching for a library before reading the standard library

The .NET BCL keeps absorbing what used to be third-party. Teams that stay on libraries from 2020 are paying for code the runtime now ships. Look at how recent issues handle the same problem with built-ins before you adopt a new dependency.

3. Skipping the test loop

If a Performance change does not have a test that fails before the change and passes after, you cannot trust the upgrade. The curated archive includes several walkthroughs of test setups that catch regressions early. Use them.

4. Confusing the documentation surface for the production surface

What works in a docs example often does not survive a production load profile. Read the curated issues for the post-mortem-flavored ones, not the marketing-flavored ones.

5. Underestimating the cost of un-tagged dependencies

A surprising number of Performance regressions in the curated archive came from a transitive dependency, not from the team’s own code. The fix is dull but worth doing once: pin versions, audit the dependency tree on each release, and treat indirect updates the same way you would treat direct ones. Several issues in the reading map walk through real-world examples of this exact pattern.

6. Skipping observability until production breaks

Teams that wait until Performance causes a customer-facing incident to add tracing or structured logs end up paying the worst version of that bill. The curated archive includes several walkthroughs of the cheapest observability slices that catch Performance regressions before they ship; they are listed under the observability topic.

FAQ

Q: I have never touched Performance. Where do I start? A: The first three entries in the reading map above are sequenced exactly for that. Read them in order; expect to spend an hour. Then bookmark the topic page and check it once a week.

Q: Does Performance change much between .NET versions? A: Yes. The patterns are stable but the defaults move. The curated archive is dated; read the most recent issue first to see the current shape, then read older issues for the why.

Q: How does Performance interact with the rest of the .NET stack? A: It depends on which slice you mean. The reading map above is intentionally cross-cutting: a few entries cover the runtime, a few cover the tooling, a few cover the libraries built on top. Pick the slice that matches your project today.

Q: I want to share this with my team. What is the one-page summary? A: This page. Send the link. The topic page is the deeper archive when they want more.

Q: What if a curated issue is out of date? A: Curated issues stay in the archive even when the underlying tech moves. The pillar page is updated quarterly to keep the order honest. If you spot a stale recommendation, reply to any issue and we will refresh.

  • C# - the working guide for the C# surface area.
  • .NET Core - the working guide for the .NET Core surface area.
  • ASP.NET Core - the working guide for the ASP.NET Core surface area.
  • EF Core - the working guide for the EF Core surface area.

Subscribe

Get the daily digest. Curated Performance issues land in your inbox the morning they go live. Subscribe to .NET News Daily.