.NET Threads: The Performance Trap Hiding in Your Code

Creating background tasks in .NET applications is crucial to maintain responsiveness. While dedicated threads can be used, they incur significant overhead.

TCP vs. UDP in .NET: Speed, Reliability, and the Hidden Cost of Performance

Choosing between TCP and UDP is crucial for data transport. TCP ensures reliability and ordered delivery, making it ideal for critical applications, while UDP prioritizes speed and low latency, suited for real-time scenarios.

HTTP/3 in .NET: Faster, Newer, and Not Always the Best Choice

Modern .NET applications support three major HTTP versions: HTTP/1.1, HTTP/2, and HTTP/3, each with distinct characteristics. HTTP/3, utilizing QUIC over UDP, offers advantages like reduced latency and better performance on unstable networks.

IO Performance: Reuse HttpClient to Avoid Connection Overhead

When populating collections in .NET, choosing the right bulk operation improves both clarity and efficiency. Methods like AddRange() and InsertRange() allow multiple items to be added in a single call, reducing overhead compared to repeated individual inserts and clearly expressing intent. When combined with proper capacity planning, these approaches help produce predictable, maintainable code—whether items are being appended or inserted at a specific position.

dotNetDave Rocks .NET Day Switzerland 2026

dotNetDave will be speaking at SQL Saturday in Austin, Texas, on June 27, 2026, as part of the No Rest for the Wicked World Tour. His sessions, "Röck Yoür Cäreer" and "Unleash Your Inner Rockstar," focus on valuable career insights for tech professionals and strategies for dynamic public speaking, promising actionable guidance and inspiration.

Database Performance: Making Entity Framework Queries Faster

The article discusses the advantages of using compiled queries in Entity Framework, especially for frequently executed and complex queries.

Boost Your .NET Projects: Copilot, Benchmarks, and the Truth About Faster Code

The article discusses the limitations and benefits of using Copilot for code optimization in the Spargine .NET project. While some suggestions from Copilot significantly improved performance, others were ineffective or detrimental. The author emphasizes the importance of thorough testing and verification of AI-generated changes to ensure quality and efficiency in code.

Collection Performance: AddRange() vs. InsertRange() When Populating Lists

When populating collections in .NET, choosing the right bulk operation improves both clarity and efficiency. Methods like AddRange() and InsertRange() allow multiple items to be added in a single call, reducing overhead compared to repeated individual inserts and clearly expressing intent. When combined with proper capacity planning, these approaches help produce predictable, maintainable code—whether items are being appended or inserted at a specific position.

Collection Performance: Finding Items at Blazing Speed

Checking whether a collection contains a specific item is a routine task in .NET, and with `Contains()` available on many collection types, it’s easy to assume they all perform similarly. In reality, the underlying data structure and search strategy make a dramatic difference, turning what looks like a simple lookup into a potential performance trap in frequently executed code paths. This article explores how different collections approach item searches, why those differences matter, and how making informed choices can lead to faster, more predictable, and more scalable applications.

String Performance: Why Some String Searches Are Slower Than You Think

String searching is fundamental to modern applications, yet its performance impact is often overlooked. This article explores how common string search patterns can quietly slow down your code—and how small, intentional changes can unlock up to 3× faster execution. Backed by real benchmarks, it shows why paying attention to string search performance matters far more than most developers realize.