Most ebook files are in PDF format, so you can easily read them using various software such as Foxit Reader or directly on the Google Chrome browser.
Some ebook files are released by publishers in other formats such as .awz, .mobi, .epub, .fb2, etc. You may need to install specific software to read these formats on mobile/PC, such as Calibre.
Please read the tutorial at this link. https://ebooknice.com/page/post?id=faq
We offer FREE conversion to the popular formats you request; however, this may take some time. Therefore, right after payment, please email us, and we will try to provide the service as quickly as possible.
For some exceptional file formats or broken links (if any), please refrain from opening any disputes. Instead, email us first, and we will try to assist within a maximum of 6 hours.
EbookNice Team
Status:
Available4.7
31 reviewsISBN-10 : 1430207841
ISBN-13 : 9781430207849
Author: Nick Wienholt
Foreword by .NET Remoting guru Ingo Rammer BACK IN 1999, the ACM published a study that presented a comparison of 40 independent implementations of a computationally intensive problem, created by different programmers in either Java the then-current managed runtime environmentor C/C++. It concluded with the finding that interpersonal differences between the developers "are much larger than the average difference between Java and C/C++" and that "performance ratios of a factor of 30 or more are not uncommon between the median programs from the upper half versus the lower half." This should teach you something: If you are not a guru-level C++ programmer, then the chance is quite high that a managed code implementation performs as well as the average C++ solution, especially given the fact that most .NET languages simply allow you fewer possibilities to introduce subtle memory related or performance-related issues. And keep in mind that this study was conducted several years ago, and that Just-In-Time Compilation (JIT) as well as memory management and garbage collection (GC) technologies have been improved in the meantime! This, however, doesn't mean that you can't create horribly slow, memory-eating applications with .NET. That's why you should be really concerned about the other part of the study's conclusion, namely that "interpersonal differences . . . are much larger." In essence, this means that you have to know about how to optimize your applications so that they run with the expected performance in a managed environment. Even though .NET frees you from a lot of tasks that in C++ would have been your responsibility as a developer, these tasks still exist; these "little puppets" have only cleared the main stage and now live in some little corner behind the scenes. If you want your application to run in the top performance range, you will still need to find the right strings to pull to move these hidden figures and tobasically keep them out of the way of negatively affecting your application's performance. (Lutz Prechtelt, "Comparing Java vs. C/C++ Efficiency Differences to Interpersonal Differences," Communications of the ACM 42, no. 10 [October 1999]: 109–112.) But knowing about the common language runtime's internals is still not enough, as lots of performance issues actually turn up during application design and not just during the coding stage. Collections, remoting, interoperability with unmanaged code, and COM components are not the only things that come to my mind in this regard. It is the aim of Nick's book to enable you to understand the design issues as well as the underlying CLR mechanisms in order to create the programs that run on the better side of the 30-times performance difference quoted in the ACM study. Nick really managed to create a book that addresses these issues, which will otherwise turn up when carelessly coding to a managed environment. This book will allow you to get into the details without being overwhelmed by the underlying complexity of the common language runtime. The only thing you have to resist after reading the book is the urge to over-optimize your code. I was delighted to see that Nick begins with a discussion of identifying an application's performance-critical sections and only later turns towards isolating and resolving these real performance bottlenecks. This is, in my opinion, one of the most important tasks—and also one of the most complex ones—when working with large-scale applications. And now, read on, and enjoy the ride to the better side of a 30-fold performance difference. Ingo Rammer, author of Advanced .NET Remoting Vienna, Austria http://www.ingorammer.com About the Book Maximizing .NET Performance is the first book dedicated entirely to providing developers and architects with information on .NET Framework performance. .NET is atechnology with a vast surface area, and coverage of every aspect of performance relevant to all .NET technologies is not possible within a single volume. This book concentrates on the performance of .NET Framework technologies like garbage collection, .NET Remoting, and Code Access Security. Because these technologies form the building blocks upon which all .NET applications run, the information in this book is relevant to all .NET developers. In addition to providing high-level material on achieving software with good performance characteristics, the books aims to enhance your knowledge of the design and implementation of the framework, and to provide the tools and techniques to allow you to conduct your own investigation into performance problems. Rather than taking a "tips and tricks" approach, the book aims to provide a detailed exploration of each topic and explore the "why" and "by how much" aspects of performance that are often overlooked.
Chapter 1 Introduction
Material Covered
Solving Specific Performance Problems
Performance and the Development Process
Conclusion
Chapter 2 Investigating Performance
Performance Investigation Patterns
White Box Investigation
Black Box Investigation Using the Benchmark Test Harness
Conclusion
Chapter 3 Type Design and Implementation
Reference and Value Types
Object Allocation and Population
Class Encapsulation
Implementing Interfaces
User-Defined Type Conversion
Method Modifiers
Overriding the Equals Method
GetHashCode Implementation
Boxing and Unboxing
Conclusion
Chapter 4 Strings, Text, and Regular Expressions
Comparing Strings
String Formatting
Enumeration
String Emptiness
Intern Pool
System.Text.StringBuilder
Reversing Strings
Regular Expressions
Conclusion
Chapter 5 Collections
System.Array
System.Collections
Enumeration
Collection Synchronization
Hashcodes and IHashCodeProvider
Stack Allocation
Conclusion
Chapter 6 Language Specifics
Visual Basic .NET
Managed C++
C#
J#
Conclusion
Chapter 7 Garbage Collection and Object Lifetime Management
The CLR Garbage Collector
Unmanaged Resources, Disposal, and Finalization
Optimizing Memory Usage
Pinning
Controlling Process Memory Usage
Memory Monitoring Tools
Conclusion
Chapter 8 Exceptions
Exceptions and Exception Handling
Protected Code Block Handler Efficiency
Execution Interruption
Protected Code Blocks
Rethrowing Exceptions
Coding to Avoid Exceptions
Throwing Exceptions
Monitoring Exceptions
Conclusion
Chapter 9 Security
Security, Application Design, and Performance
CLR Security Model
Cryptography and Encryption
Monitoring Security
Conclusion
Chapter 10 Threading
Thread Synchronization
ReaderWriterLock
Thread Suspension
Thread Pool
Monitoring Threading
Conclusion
Chapter 11 IO and Serialization
IO Performance Background
Sparse, Compressed, and Memory-Mapped Files
Serialization
Conclusion
Chapter 12 Remoting
Cross-Application Domain Data Movement
Remoting Channel Selection
Object Activation
Calling Methods
IIS Hosting
Sink Chains
Monitoring Remoting
Conclusion
Chapter 13 Unmanaged Code Interoperability
P/Invoke Calls
COM
Managed C++
Monitoring Interop
Conclusion
Chapter 14 The Common Language Runtime
Process Initialization
Loading Behavior
Method and Property Inlining
Custom Attributes
Managing the CLR
Checked Arithmetic Code
Decimal Type
Debug and Release Builds
Managed Application Memory Usage
Reflection
Conclusion
Chapter 15 Solving Performance Problems
Task Manager
Code Profiler
System Monitor MMC Snap-In (PerfMon)
Memory Profilers
Below the Source Code
Third-Party Tools
Enterprise Tools
optimize network performance
maximize net worth
how to maximize network performance
to maximize net revenue a price searcher should
maximize net benefits equation
Tags: Maximizing NET, Performance, Nick Wienholt, NET Remoting