See larger picture | Maximizing .NET Performance (Expert's Voice)
by
Nick Wienholt
- ApressPrice at Amazon.com: $44.99Availability:
This item is currently not available by this merchant.
|
- Average Customer Review:
Based on
7
reviews.
- Amazon.com Sales Rank: 792903
|
Product Description Foreword by .NET Remoting guru Ingo Rammer BACK IN 1999, the ACM published a study1 that presented a comparison of 40 independent implementations of a computationally intensive problem, created by different programmers in either Javathe 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++ solutionespecially 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 to basically 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&emdash;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 tasksand also one of the most complex oneswhen 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 a technology 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.
Featured Customer Reviews .NET Framework Tour from a Performance Perspective,
November 14, 2004 There are no other books on .NET Performance so, when this one fell in my hands, it put a smile on my face (sad, I know). When I got to the end, I was not disappointed. Around 250 well-written pages over 15 chapters and, as you'd expect, you can delve into it in random order, making it a good reference book. Even so, I read it cover to cover. The first two chapters lay the ground; the last chapter provides generic advice on troubleshooting and the 12 chapters in-between focus on specific .NET areas: a framework tour from a performance perspective. Naturally, a subject of this nature assumes the reader has some .NET experience and targets the Intermediate/Advanced level.
Don't expect material on GUI (Windows.Forms), Database (ADO.NET) and Web (ASP.NET); rather a discussion on elements that every application is built on (Type design/implementation, Strings/Text/RegEx, Collections, Language Specifics, GC & Object Lifetime, Exceptions, Security, Threading, IO/Serialisation, PInvoke, CLR). I challenge you to find a chapter that does not teach you at least one thing you were unaware of before. We have to sum it up with the great technical phrase: "It is all great stuff".
There are no axioms presented, and readers expecting a "cookbook" will be disappointed. Every claim is backed up with a reference to a testcase and even then, only after we have delved under the covers to see *why* something is slow or *how* a change makes something faster. By taking this approach, the reader should be able to repeat the investigation/tests for newer/other versions of the framework. So, having just mentioned how there is a cross-reference to specific testcases, I have hinted at what is one of the best contributions of this book: A .NET Benchmark Test Harness. This is described in the appendix of the book and the code/binaries can be obtained from the publisher's site. Excellent choice for improving performance in your .NET apps,
July 06, 2004 I just received this book last week and I have been thoroughly impressed by its readability and the abundance of useful tips and techniques contained within it. It presents everything from an overview of white and black box testing methods to improving cross domain apps that utilize remoting. While it is a bit light in some areas, it brings up the major performance degrading issues that most developers will encounter at some point or another. It is an excellent book for the intermediate .NET programmer; Apress once again delivers an excellent book. Very Helpful,
April 14, 2004 Definitely got a lot out of this book. Lots of great examples and concepts that we put to use right away. Highly recommended for intermediate developers working with .NET. Different approach - Weak in some areas,
March 23, 2004 My guess is that the reviews written before mine may come from friends of the author. (OK - this is the internet, so I can write an opinion that may or may not be true). The book has some good points but doesn't warrant 5 stars - maybe 3 or 4.For one, the book refers to examples that are on the apress.com site in compiled code. Very few tables were actually inserted in the book to prove the author's point. Therefore, to really understand what the author is getting at you need to be on a computer able to click through different examples. I also felt that in some places the introductory information was a bit verbose and sometimes included information that was not relevant to the particular performance improvements being pointed out. I'd have rather the author cut down on some of the .Net overview stuff and put in some more charts. There were also some things missing that I would have liked to see. For example, XML is slow and there was no discussion on that. Also, some information on tuning the parameters in the machine.config would have been helpful - which affects the loading and of assemblies, for one. But, there wasn't any detailed discussion on this information. The book takes varying concepts such as remoting, exceptions, and threading and looks at them in a very granular way. It is an interesting approach and the data (partially in the book partially from running the code) is very useful. I haven't seen any other book approach performance in this way, and the book stands out in that regard. However, if the reader is looking for a set bulleted of do's and don'ts - this is not the book for them. This book is amazing,
November 18, 2003 If Applied .Net Programming is my old testiment of programming, this book is my new testiment. It is full of so many good tips on performance. We have a project going that has 400+ classes and this book helped us out so much in getting better performance out of the app. The benchmark testing framework the author shows is worth the price itself!!!
You might also be interested in these items...
|
|