Book description
Enhance your applications' performance using best practices for benchmarking, application profiling, asynchronous programming, designing responsive UIs, gRPC communication, and distributed applications
Key Features
- Make the best use of performance enhancements in C# 10.0 and .NET 6
- Boost application performance by identifying hardware bottlenecks and common performance pitfalls
- Get to grips with best practices and techniques for improving the scalability of distributed systems
Book Description
Writing high-performance code while building an application is crucial, and over the years, Microsoft has focused on delivering various performance-related improvements within the .NET ecosystem. This book will help you understand the aspects involved in designing responsive, resilient, and high-performance applications with the new version of C# and .NET.
You will start by understanding the foundation of high-performance code and the latest performance-related improvements in C# 10.0 and .NET 6. Next, you'll learn how to use tracing and diagnostics to track down performance issues and the cause of memory leaks. The chapters that follow then show you how to enhance the performance of your networked applications and various ways to improve directory tasks, file tasks, and more. Later, you'll go on to improve data querying performance and write responsive user interfaces. You'll also discover how you can use cloud providers such as Microsoft Azure to build scalable distributed solutions. Finally, you'll explore various ways to process code synchronously, asynchronously, and in parallel to reduce the time it takes to process a series of tasks.
By the end of this C# programming book, you'll have the confidence you need to build highly resilient, high-performance applications that meet your customer's demands.
What you will learn
- Use correct types and collections to enhance application performance
- Profile, benchmark, and identify performance issues with the codebase
- Explore how to best perform queries on LINQ to improve an application's performance
- Effectively utilize a number of CPUs and cores through asynchronous programming
- Build responsive user interfaces with WinForms, WPF, MAUI, and WinUI
- Benchmark ADO.NET, Entity Framework Core, and Dapper for data access
- Implement CQRS and event sourcing and build and deploy microservices
Who this book is for
This book is for software engineers, professional software developers, performance engineers, and application profilers looking to improve the speed of their code or take their skills to the next level to gain a competitive advantage. You should be a proficient C# programmer who can already put the language to good use and is also comfortable using Microsoft Visual Studio 2022.
Table of contents
- High-Performance Programming in C# and .NET
- Contributors
- About the author
- About the reviewers
- Preface
- Part 1: High-Performance Code Foundation
- Chapter 1: Introducing C# 10.0 and .NET 6
- Chapter 2: Implementing C# Interoperability
- Chapter 3: Predefined Data Types and Memory Allocations
- Chapter 4: Memory Management
-
Chapter 5: Application Profiling and Tracing
- Technical requirements
- Understanding code metrics
- Performing static code analysis
- Generating and viewing memory dumps
- Viewing loaded modules
- Debugging your applications
- Using tracing and diagnostics tools
- Installing and using dotnet-counters
- Tracking down and fixing a memory leak with dotMemory
- Finding the cause of a UI freeze with dotTrace
- Optimizing application performance and memory traffic with dotTrace
- Summary
- Questions
- Further reading
- Part 2: Writing High-Performance Code
-
Chapter 6: The .NET Collections
- Technical requirements
- Understanding the different collection offerings
- Understanding Big O notation
- Setting up our sample database
- Deciding between interfaces and concrete classes
- Deciding between using arrays or collections
- Accessing objects using indexers
- Comparing IEnumerable and IEnumerator
- Database query performance
- Exploring the yield keyword
- Learning the difference between concurrency and parallelism
- Learning the difference between Equals() and ==
- Summary
- Questions
- Further reading
-
Chapter 7: LINQ Performance
- Technical requirements
- Setting up a sample database
- Setting up our in-memory sample data
- Database query performance
- Getting the last value of a collection
- Avoid using the let keyword in LINQ queries
- Increasing Group By performance in LINQ queries
- Filtering lists
- Understanding closures
- Summary
- Questions
- Further reading
- Chapter 8: File and Stream I/O
- Chapter 9: Enhancing the Performance of Networked Applications
-
Chapter 10: Setting Up Our Database Project
- Technical requirements
- Setting up our database
- Setting up our database access project
- Writing the SecretsManager
- Writing the Product class
- Writing the SqlCommandModel class
- Writing the SqlCommandParameterModel class
- Writing the AdoDotNet class
- Writing the EntityFrameworkCoreData class
- Writing the DapperDotNet class
- Summary
- Further reading
- Chapter 11: Benchmarking Relational Data Access Frameworks
- Chapter 12: Responsive User Interfaces
- Chapter 13: Distributed Systems
- Part 3: Threading and Concurrency
- Chapter 14: Multi-Threaded Programming
- Chapter 15: Parallel Programming
-
Chapter 16: Asynchronous Programming
- Technical requirements
- Understanding the TAP model
- async, await, and Task
- Benchmarking GetAwaiter.GetResult(), .Result, and .Wait for both Task and ValueTask
- Using async, await, and WhenAll
- Canceling asynchronous operations
- Writing files asynchronously
- Reading files asynchronously
- Summary
- Questions
- Further reading
-
Assessments
- Chapter 1, Introducing C# 10.0 and .NET 6
- Chapter 2, Implementing C# Interoperability
- Chapter 3, Predefined Data Types and Memory Allocations
- Chapter 4, Memory Management
- Chapter 5, Application Profiling and Tracing
- Chapter 6, The .NET Collections
- Chapter 7, LINQ Performance
- Chapter 8, File and Stream I/O
- Chapter 9, Enhancing the Performance of Networked Applications
- Chapter 10, Setting Up Our Database Project
- Chapter 11, Benchmarking Relational Data Access Frameworks
- Chapter 12, Responsive User Interfaces
- Chapter 13, Distributed Systems
- Chapter 14, Multi-Threaded Programming
- Chapter 15, Parallel Programming
- Chapter 16, Asynchronous Programming
- Why subscribe?
- Other Books You May Enjoy
Product information
- Title: High-Performance Programming in C# and .NET
- Author(s):
- Release date: July 2022
- Publisher(s): Packt Publishing
- ISBN: 9781800564718
You might also like
book
Pragmatic Test-Driven Development in C# and .NET
Build realistic applications with both relational and document databases and derive your code design using TDD. …
book
Hands-On Network Programming with C# and .NET Core
A comprehensive guide to understanding network architecture, communication protocols, and network analysis to build secure applications …
book
Hands-On Design Patterns with C# and .NET Core
Apply design patterns to solve problems in software architecture and programming using C# 7.x and .NET …
book
Clean Code in C#
Develop your programming skills by exploring essential topics such as code reviews, implementing TDD and BDD, …