Author: Ben Watson
Publisher: Ben Watson
Take performance to the next level!
This book does not just teach you how the CLR works---it teaches you exactly what you need to do now to obtain the best performance today. It will expertly guide you through the nuts and bolts of extreme performance optimization in .NET, complete with in-depth examinations of CLR functionality, free tool recommendations and tutorials, useful anecdotes, and step-by-step guides to measure and improve performance.
This second edition incorporates the advances and improvements in .NET over the last few years, as well as greatly expanded coverage of tools, more topics, more tutorials, more tips, and improvements throughout the entire book.
New in the 2nd Edition:
- 50% increase in content!
- New examples, code samples, and diagrams throughout entire book
- More ways to analyze the heap and find memory problems
- More tool coverage, including expanded usage of Visual Studio
- More benchmarking
- New GC configuration options
- Code warmup techniques
- New .NET features such as ref-returns, value tuples, SIMD, and more
- More detailed analysis of LINQ
- Tips for high-level feature areas such as ASP.NET, ADO.NET, and WPF
Also find expanded coverage and discover new tips and tricks for:
- Profiling with multiple tools to quickly find problem areas
- Detailed description of the garbage collector, how to optimize your code for it, and how to diagnose difficult memory-related issues
- How to analyze JIT and diagnose warmup problems
- Effective use of the Task Parallel Library to maximize throughput
- Which .NET features and APIs to use and which to avoid
- Instrument your program with performance counters and ETW events
- Use the latest and greatest .NET features
- Build a performance-minded team
- ...and so much more
Author: Ben Watson
Category: Application software
Take performance to the next level! This book does not just teach you how the CLR works---it teaches you exactly what you need to do now to obtain the best performance today. It will expertly guide you through the nuts and bolts of extreme performance optimization in .NET, complete with in-depth examinations of CLR functionality, free tool recommendations and tutorials, useful anecdotes, and step-by-step guides to measure and improve performance. This second edition incorporates the advances and improvements in .NET over the last few years, as well as greatly expanded coverage of tools, more topics, more tutorials, more tips, and improvements throughout the entire book. New in the 2nd Edition: 50% increase in content! New examples, code samples, and diagrams throughout entire book More ways to analyze the heap and find memory problems More tool coverage, including expanded usage of Visual Studio More benchmarking New GC configuration options Code warmup techniques New .NET features such as ref-returns, value tuples, SIMD, and more More detailed analysis of LINQ Tips for high-level feature areas such as ASP.NET, ADO.NET, and WPF Also find expanded coverage and discover new tips and tricks for: Profiling with multiple tools to quickly find problem areas Detailed description of the garbage collector, how to optimize your code for it, and how to diagnose difficult memory-related issues How to analyze JIT and diagnose warmup problems Effective use of the Task Parallel Library to maximize throughput Which .NET features and APIs to use and which to avoid Instrument your program with performance counters and ETW events Use the latest and greatest .NET features Build a performance-minded team ...and so much more
Author: Ben Watson
Publisher: Ben Watson
Do you want your .NET code to have the absolute best performance it can? With concision and clarity, this book demystifies the CLR, teaching you how and why to write code with optimum performance. Learn critical lessons from a person who helped design and build one of the largest high-performance .NET systems in the world. This book does not just teach you how the CLR works—it teaches you exactly what you need to do now to obtain the best performance today. It will expertly guide you through the nuts and bolts of extreme performance optimization in .NET, complete with in-depth examinations of CLR functionality, free tool recommendations and tutorials, useful anecdotes, and step-by-step guides to measure and improve performance. Among the topics you will learn are how to: • Choose what to measure and why • Use many amazing tools, freely available, to solve problems quickly • Understand the .NET garbage collector and its effect on your application • Use effective coding patterns that lead to optimal garbage collection performance • Diagnose common GC-related issues • Reduce costs of JITting • Use multiple threads sanely and effectively, avoiding synchronization problems • Know which .NET features and APIs to use and which to avoid • Use code generation to avoid performance problems • Measure everything and expose hidden performance issues • Instrument your program with performance counters and ETW events • Use the latest and greatest .NET features • Ensure your code can run on mobile devices without problems • Build a performance-minded team …and much more.
Author: Sasha Goldshtein,Dima Zurbalev,Ido Flatow
Maximizing the performance of your algorithms and applications is extremely important and can give you a competitive advantage, a lower cost of ownership, and happier users. Pro .NET Performance explains the internals of Windows, the CLR, and the physical hardware that affect the performance of your applications, and gives you the knowledge and tools to measure how your code performs in isolation from external factors. The book is full of C# code samples and tips to help you squeeze every bit of juice from your application—lower memory utilization, consistent CPU usage, and fewer I/O operations across the network and disk. Pro .NET Performance will change the way you think about .NET application development. Guides you through performance measurement with a variety of profilers and other tools Explains how OS and CLR internals affect your application’s performance in unexpected ways Provides you with tips and real-life case studies for improving application performance What you’ll learn Measure your code’s performance with profilers and other tools. Understand where the bottlenecks are and focus on the right area for performance improvement. Manage memory efficiently by interacting properly with the garbage collector. Avoid common pitfalls by choosing the right abstractions. Understand the performance implications of the underlying operating system and runtime. Improve the performance of your applications by parallelization, caching, micro-optimization, and other techniques. Who this book is for Pro .NET Performance is for working .NET developers who care about the performance of their applications. It requires basic familiarity with Windows and the CLR, but guides the reader along the way and does not require prior experience with any performance-measurement tools. Pro .NET Performance also offers practical tips, case studies, and low-level knowledge for experienced developers and architects. Table of ContentsChapter 1: Performance Metrics Chapter 2: Performance Measurement Tools Chapter 3: Type Internals Chapter 4: Garbage Collection and Finalization Chapter 5: Collections and Generics Chapter 6: Concurrency and Parallelism Chapter 7: Networking, I/O, and Serialization Chapter 8: Unsafe Code and Interoperability Chapter 9: Algorithm Optimization Chapter 10: Performance Patterns Chapter 11: Web Application Performance
Author: Ben Watson
Publisher: Pearson Education
Real Solutions for C# 4.0 Programmers Need fast, robust, efficient code solutions for Microsoft C# 4.0? This book delivers exactly what you’re looking for. You’ll find more than 200 solutions, best-practice techniques, and tested code samples for everything from classes to exceptions, networking to XML, LINQ to Silverlight. Completely up-to-date, this book fully reflects major language enhancements introduced with the new C# 4.0 and .NET 4.0. When time is of the essence, turn here first: Get answers you can trust and code you can use, right now! Beginning with the language essentials and moving on to solving common problems using the .NET Framework, C# 4.0 How-To addresses a wide range of general programming problems and algorithms. Along the way is clear, concise coverage of a broad spectrum of C# techniques that will help developers of all levels become more proficient with C# and the most popular .NET tools. Fast, Reliable, and Easy to Use! Write more elegant, efficient, and reusable code Take advantage of real-world tips and best-practices advice Create more effective classes, interfaces, and types Master powerful data handling techniques using collections, serialization, databases, and XML Implement more effective user interfaces with both WPF and WinForms Construct Web-based and media-rich applications with ASP.NET and Silverlight Make the most of delegates, events, and anonymous methods Leverage advanced C# features ranging from reflection to asynchronous programming Harness the power of regular expressions Interact effectively with Windows and underlying hardware Master the best reusable patterns for designing complex programs
Author: Mario Hewardt
Publisher: Pearson Education
“Mario Hewardt’s Advanced .NET Debugging is an excellent resource for both beginner and experienced developers working with .NET. The book is also packed with many debugging tips and discussions of CLR internals, which will benefit developers architecting software.” –Jeffrey Richter, consultant, trainer, and author at Wintellect “Mario has done it again. His Advanced Windows Debugging (coauthored with Daniel Pravat) is an invaluable resource for native code debugging, and Advanced .NET Debugging achieves the same quality, clarity, and breadth to make it just as invaluable for .NET debugging.” –Mark Russinovich, Technical Fellow, Microsoft Corporation The Only Complete, Practical Guide to Fixing the Toughest .NET Bugs Advanced .NET Debugging is the first focused, pragmatic guide to tracking down today’s most complex and challenging .NET application bugs. It is the only book to focus entirely on using powerful native debugging tools, including WinDBG, NTSD, and CDB, to debug .NET applications. Using these tools, author Mario Hewardt explains how to identify the real root causes of problems—far more quickly than you ever could with other debuggers. Hewardt first introduces the key concepts needed to successfully use .NET’s native debuggers. Next, he turns to sophisticated debugging techniques, using real-world examples that demonstrate many common C# programming errors. This book enables you to Make practical use of postmortem debugging, including PowerDBG and other “power tools” Understand the debugging details and implications of the new .NET CLR 4.0 Master and successfully use Debugging Tools for Windows, as well as SOS, SOSEX, CLR Profiler, and other powerful tools Gain a deeper, more practical understanding of CLR internals, such as examining thread-specific data, managed heap and garbage collector, interoperability layer, and .NET exceptions Solve difficult synchronization problems, managed heap problems, interoperability problems, and much more Generate and successfully analyze crash dumps A companion web site (advanceddotnetdebugging.com) contains all sample code, examples, and bonus content.
Author: Joe Duffy
Publisher: Pearson Education
“When you begin using multi-threading throughout an application, the importance of clean architecture and design is critical. . . . This places an emphasis on understanding not only the platform’s capabilities but also emerging best practices. Joe does a great job interspersing best practices alongside theory throughout his book.” – From the Foreword by Craig Mundie, Chief Research and Strategy Officer, Microsoft Corporation Author Joe Duffy has risen to the challenge of explaining how to write software that takes full advantage of concurrency and hardware parallelism. In Concurrent Programming on Windows, he explains how to design, implement, and maintain large-scale concurrent programs, primarily using C# and C++ for Windows. Duffy aims to give application, system, and library developers the tools and techniques needed to write efficient, safe code for multicore processors. This is important not only for the kinds of problems where concurrency is inherent and easily exploitable—such as server applications, compute-intensive image manipulation, financial analysis, simulations, and AI algorithms—but also for problems that can be speeded up using parallelism but require more effort—such as math libraries, sort routines, report generation, XML manipulation, and stream processing algorithms. Concurrent Programming on Windows has four major sections: The first introduces concurrency at a high level, followed by a section that focuses on the fundamental platform features, inner workings, and API details. Next, there is a section that describes common patterns, best practices, algorithms, and data structures that emerge while writing concurrent software. The final section covers many of the common system-wide architectural and process concerns of concurrent programming. This is the only book you’ll need in order to learn the best practices and common patterns for programming with concurrency on Windows and .NET.
Author: Konrad Kokosa
Understand .NET memory management internal workings, pitfalls, and techniques in order to effectively avoid a wide range of performance and scalability problems in your software. Despite automatic memory management in .NET, there are many advantages to be found in understanding how .NET memory works and how you can best write software that interacts with it efficiently and effectively. Pro .NET Memory Management is your comprehensive guide to writing better software by understanding and working with memory management in .NET. Thoroughly vetted by the .NET Team at Microsoft, this book contains 25 valuable troubleshooting scenarios designed to help diagnose challenging memory problems. Readers will also benefit from a multitude of .NET memory management “rules” to live by that introduce methods for writing memory-aware code and the means for avoiding common, destructive pitfalls. What You'll Learn Understand the theoretical underpinnings of automatic memory management Take a deep dive into every aspect of .NET memory management, including detailed coverage of garbage collection (GC) implementation, that would otherwise take years of experience to acquire Get practical advice on how this knowledge can be applied in real-world software development Use practical knowledge of tools related to .NET memory management to diagnose various memory-related issues Explore various aspects of advanced memory management, including use of Span and Memory types Who This Book Is For .NET developers, solution architects, and performance engineers
Author: Richard Blewett,Andrew Clymer,Rock Solid Knowledge Ltd
Pro Asynchronous Programming with .NET teaches the essential skill of asynchronous programming in .NET. It answers critical questions in .NET application development, such as: how do I keep my program responding at all times to keep my users happy? how do I make the most of the available hardware? how can I improve performance? In the modern world, users expect more and more from their applications and devices, and multi-core hardware has the potential to provide it. But it takes carefully crafted code to turn that potential into responsive, scalable applications. With Pro Asynchronous Programming with .NET you will: Meet the underlying model for asynchrony on Windows—threads. Learn how to perform long blocking operations away from your UI thread to keep your UI responsive, then weave the results back in as seamlessly as possible. Master the async/await model of asynchrony in .NET, which makes asynchronous programming simpler and more achievable than ever before. Solve common problems in parallel programming with modern async techniques. Get under the hood of your asynchronous code with debugging techniques and insights from Visual Studio and beyond. In the past asynchronous programming was seen as an advanced skill. It’s now a must for all modern developers. Pro Asynchronous Programming with .NET is your practical guide to using this important programming skill anywhere on the .NET platform.
Author: Kevin Hazzard,Jason Bock
Publisher: Manning Publications
Provides information on using Microsoft .NET to create and modify programs, covering such topics as code generation, application composition, and Dynamic Language Runtime.
Author: Stephen Cleary
Publisher: "O'Reilly Media, Inc."
If you're one of the many developers uncertain about concurrent and multithreaded development, this practical cookbook will change your mind. With more than 75 code-rich recipes, author Stephen Cleary demonstrates parallel processing and asynchronous programming techniques, using libraries and language features in .NET 4.5 and C# 5.0. Concurrency is becoming more common in responsive and scalable application development, but it’s been extremely difficult to code. The detailed solutions in this cookbook show you how modern tools raise the level of abstraction, making concurrency much easier than before. Complete with ready-to-use code and discussions about how and why the solution works, you get recipes for using: async and await for asynchronous operations Parallel programming with the Task Parallel Library The TPL Dataflow library for creating dataflow pipelines Capabilities that Reactive Extensions build on top of LINQ Unit testing with concurrent code Interop scenarios for combining concurrent approaches Immutable, threadsafe, and producer/consumer collections Cancellation support in your concurrent code Asynchronous-friendly Object-Oriented Programming Thread synchronization for accessing data
Author: Chris Farrell,Nick Harrison
Publisher: Red Gate Books
This book starts with an introduction to the core concepts of .NET memory management and garbage collection, and then quickly layers on additional details and intricacies. Once you're up to speed, you can dive into the guided troubleshooting tour, and tips for engineering your application to maximise performance. And to finish off, take a look at some more sophisticated considerations, and even a peek inside the Windows memory model.
Author: Gary McLean Hall
Publisher: Microsoft Press
Agile coding with design patterns and SOLID principles As every developer knows, requirements are subject to change. But when you build adaptability into your code, you can respond to change more easily and avoid disruptive rework. Focusing on Agile programming, this book describes the best practices, principles, and patterns that enable you to create flexible, adaptive code--and deliver better business value. Expert guidance to bridge the gap between theory and practice Get grounded in Scrum: artifacts, roles, metrics, phases Organize and manage architectural dependencies Review best practices for patterns and anti-patterns Master SOLID principles: single-responsibility, open/closed, Liskov substitution Manage the versatility of interfaces for adaptive code Perform unit testing and refactoring in tandem See how delegation and abstraction impact code adaptability Learn best ways to implement dependency interjection Apply what you learn to a pragmatic, agile coding project Get code samples at: http://github.com/garymclean/AdaptiveCode
Author: Brian Rasmussen
Publisher: Microsoft Press
Author: Richard Blum
Publisher: John Wiley & Sons
On its own, C# simplifies network programming. Combine it with the precise instruction found in C# Network Programming, and you'll find that building network applications is easier and quicker than ever. This book helps newcomers get started with a look at the basics of network programming as they relate to C#, including the language's network classes, the Winsock interface, and DNS resolution. Spend as much time here as you need, then dig into the core topics of the network layer. You'll learn to make sockets connections via TCP and "connectionless" connections via UDP. You'll also discover just how much help C# gives you with some of your toughest chores, such as asynchronous socket programming, multithreading, and multicasting. Network-layer techniques are just a means to an end, of course, and so this book keeps going, providing a series of detailed application-layer programming examples that show you how to work with real protocols and real network environments to build and implement a variety of applications. Use SNMP to manage network devices, SMTP to communicate with remote mail servers, and HTTP to Web-enable your applications. And use classes native to C# to query and modify Active Directory entries. Rounding it all out is plenty of advanced coverage to push your C# network programming skills to the limit. For example, you'll learn two ways to share application methods across the network: using Web services and remoting. You'll also master the security features intrinsic to C# and .NET--features that stand to benefit all of your programming projects.
Author: Rob Aley
Bring the power of functional programming to your PHP applications. From performance optimizations to concurrency, improved testability to code brevity, functional programming has a host of benefits when compared to traditional imperative programming. Part one of Pro Functional PHP Programming takes you through the basics of functional programming, outlining the key concepts and how they translate into standard PHP functions and code. Part two takes this theory and shows you the strategies for implementing it to solve real problems in your new or existing PHP applications. Functional programming is popular in languages such as Lisp, Scheme and Clojure, but PHP also contains all you need to write functional code. This book will show you how to take advantage of functional programming in your own projects, utilizing the PHP programming language that you already know. What You'll Learn Discover functional programming in PHP Work with functional programming functions Design strategies for high-performance applications Manage business logic with functions Use functional programming in object-oriented and procedural applications Employ helper libraries in your application Process big data with functional PHP Who This Book Is For Programmers and web developers with experience of PHP who are looking to get more out of their PHP coding and be able to do more with PHP.
Author: Adam Freeman
Now in its 7th edition, the best selling book on MVC is updated for ASP.NET Core MVC 2. It contains detailed explanations of the Core MVC functionality which enables developers to produce leaner, cloud optimized and mobile-ready applications for the .NET platform. This book puts ASP.NET Core MVC into context and dives deep into the tools and techniques required to build modern, cloud optimized extensible web applications. All the new MVC features are described in detail and the author explains how best to apply them to both new and existing projects. The ASP.NET Core MVC Framework is the latest evolution of Microsoft’s ASP.NET web platform, built on a completely new foundation. It represents a fundamental change to how Microsoft constructs and deploys web frameworks and is free of the legacy of earlier technologies such as Web Forms. ASP.NET Core MVC provides a "host agnostic" framework and a high-productivity programming model that promotes cleaner code architecture, test-driven development, and powerful extensibility. Best-selling author Adam Freeman has thoroughly revised this market-leading book and explains how to get the most from ASP.NET Core MVC. He starts with the nuts-and-bolts and shows you everything through to advanced features, going in-depth to give you the knowledge you need. The book includes a fully worked case study of a functioning web application that readers can use as a template for their own projects. What's New in This Edition Fully updated for Visual Studio 2017, C# 7 and .NET Core 2 Coverage of new features such as view filters Wider platform and tooling coverage than ever before, with more on Visual Studio Code and working with .NET Core on non-Windows platforms Docker-based application deployment What You Will Learn Gain a solid architectural understanding of ASP.NET Core MVC Explore the entire ASP.NET MVC Framework as a cohesive whole See how MVC and test-driven development work in action Learn what's new in ASP.NET Core MVC 2 and how best to apply these new features to your own work See how to create RESTful web services and Single Page Applications Build on your existing knowledge of previous MVC releases to get up and running with the new programming model quickly and effectively Who This Book Is For This book is for web developers with a basic knowledge of ASP.NET and C# who want to incorporate the latest improvements and functionality in the ASP.NET Core MVC 2 Framework.
Author: Robert C. Martin
Publisher: Pearson Education
Looks at the principles and clean code, includes case studies showcasing the practices of writing clean code, and contains a list of heuristics and "smells" accumulated from the process of writing clean code.
Author: Björn Andrist,Viktor Sehr
Publisher: Packt Publishing Ltd
Write code that scales across CPU registers, multi-core, and machine clusters Key Features Explore concurrent programming in C++ Identify memory management problems Use SIMD and STL containers for performance improvement Book Description C++ is a highly portable language and can be used to write both large-scale applications and performance-critical code. It has evolved over the last few years to become a modern and expressive language. This book will guide you through optimizing the performance of your C++ apps by allowing them to run faster and consume fewer resources on the device they're running on without compromising the readability of your code base. The book begins by helping you measure and identify bottlenecks in a C++ code base. It then moves on by teaching you how to use modern C++ constructs and techniques. You'll see how this affects the way you write code. Next, you'll see the importance of data structure optimization and memory management, and how it can be used efficiently with respect to CPU caches. After that, you'll see how STL algorithm and composable Range V3 should be used to both achieve faster execution and more readable code, followed by how to use STL containers and how to write your own specialized iterators. Moving on, you’ll get hands-on experience in making use of modern C++ metaprogramming and reflection to reduce boilerplate code as well as in working with proxy objects to perform optimizations under the hood. After that, you’ll learn concurrent programming and understand lock-free data structures. The book ends with an overview of parallel algorithms using STL execution policies, Boost Compute, and OpenCL to utilize both the CPU and the GPU. What you will learn Benefits of modern C++ constructs and techniques Identify hardware bottlenecks, such as CPU cache misses, to boost performance Write specialized data structures for performance-critical code Use modern metaprogramming techniques to reduce runtime calculations Achieve efficient memory management using custom memory allocators Reduce boilerplate code using reflection techniques Reap the benefits of lock-free concurrent programming Perform under-the-hood optimizations with preserved readability using proxy objects Gain insights into subtle optimizations used by STL algorithms Utilize the Range V3 library for expressive C++ code Parallelize your code over CPU and GPU, without compromising readability Who this book is for If you're a C++ developer looking to improve the speed of your code or simply wanting to take your skills up to the next level, then this book is perfect for you.
Author: Marijn Haverbeke
Publisher: No Starch Press