|
|||||||||||||||||||||||||||||||||||
|
16 Reviews
|
Average Customer Review
Share your thoughts with other customers
Create your own review
|
|
Most Helpful First | Newest First
|
|
28 of 29 people found the following review helpful:
4.0 out of 5 stars
Keys to acceptable C++ performance,
By
This review is from: Efficient C++: Performance Programming Techniques (Paperback)
The authors are developers of network and web server software for IBM. They specifically target performance issues related to C++ programming. The primary topics of discussion are constructors & destructors, virtual functions, return value optimization, temporary objects, inlining, memory managers, and reference counting. Learn how to create efficient constructor functions. Learn how to avoid the costly construction of temporary objects. The authors promote "lazy evaluation" and nail "useless computations" and "obsolete code." Algorithm and data structure discussions are referred to other standard references, however there is coverage of the STL structures (insertion, deletion, traversal, and find operations). An additional bonus is the excellent coverage of multithreading issues.
21 of 22 people found the following review helpful:
4.0 out of 5 stars
Recommended, with reservations,
By
This review is from: Efficient C++: Performance Programming Techniques (Paperback)
I thought the book a useful compendium of performance information, as far as it went: temporaries, constructors and destructors, virtual functions, inlining, reference counting, some STL, multiprocessor scalability, and system architecture dependencies. My reservations are the number of omissions (most of the Standard Library, space efficiency, exceptions, performance measurement, etc.) and the number of typos.
15 of 16 people found the following review helpful:
5.0 out of 5 stars
Informative through painful personal experiences,
By Robert A. Gibson "softwareengineer" (Research Triangle Park, NC - USA) - See all my reviews (REAL NAME)
This review is from: Efficient C++: Performance Programming Techniques (Paperback)
To start, I have to say that this book is well written. By using examples from personal experience, they also keep you very involved. So far, I have been forced to put the book down, in order to test the examples they describe. I was astonished with their first example, where a poorly thought out Trace class caused performance to drop 80%. Talk about bang for the buck! By reading this book, I expect to give a great deal more thought to the performance implications from the start. Good job guys!
12 of 13 people found the following review helpful:
4.0 out of 5 stars
Good coverage of inline.,
By A Customer
This review is from: Efficient C++: Performance Programming Techniques (Paperback)
Useful and Important. Three good chapters on use of the keyword inline. It covers specifics on when the current crop of compilers can and cannot satisfy requests to inline function calls. Some potential workarounds are covered in detail. Includes some hints on when a compiler might actually be able to inline a virtual function call - something I've hoped for, but have been disappointed by in the past.Read it, weep, and then write a letter to your compiler vendor asking them to improve the state of the art in compilers. (I'm most familiar with VC6. Your mileage may vary.)
6 of 6 people found the following review helpful:
4.0 out of 5 stars
Valuable information, but far from complete,
By
This review is from: Efficient C++: Performance Programming Techniques (Paperback)
Bulka and Mayhew's "Efficient C++" is an enjoyable and useful book, filled with helpful information that can be immediately applied to C++ programming. Its coverage of techniques for inlining, achieving the return value optimization, and avoiding temporary object creation is quite good. I also found the second chapter, which presents a case study about writing a tracer class, to be informative and a tidy overview of efficiency methods. There are also chapters discussing virtual functions, memory pooling, STL, and efficiency at the implementation and design levels. One helpful feature of this book is its presentation of a number of bar graphs illustrating the runtimes of actual test code. This helps to hammer home just how efficient or costly various techniques actually are.Unfortunately, there are a number of topics which are not discussed or are only briefly discussed. The chapter on the STL, while accurate, is very incomplete. I would recommend bolstering this information with Meyers' "Effective STL". Also, different compilers implement different optimizations. It would have been nice to see a discussion of the optimizations provided by the most popular compilers, as well as tips on how to use these features effectively. The C++ standard allows compiler implementers to ignore certain keywords (register and inline) and to provide optimizations such as the return value optimization. I would have liked to have seen a discussion of the optimizations actually provided by various compilers as well as how they relate to the C++ standard. In addition, there are some advanced techniques, such as the Barton-Nackman trick, for avoiding the cost of virtual functions. Unfortunately, this and other comparable methods are not discussed. On the whole, this book provides a lot of valuable information, but it could have been much more complete.
16 of 20 people found the following review helpful:
5.0 out of 5 stars
How to Make C++ Programs Run Faster and Cleaner,
By Charles Ashbacher (Marion, Iowa United States) - See all my reviews (TOP 500 REVIEWER) (VINE VOICE) (HALL OF FAME REVIEWER)
This review is from: Efficient C++: Performance Programming Techniques (Paperback)
There are two different categories of efficiency considerations: those that you do because they are necessary and those done only when necessary. The first category consists of those changes that make the code run faster and cleaner, whether it be on a silicon or carbon based CPU. The second category becomes significant when, no matter how clean your design and completion of the first category, the hard requirements are such that the executable just does not perform to the velocity specifications. This second category is where the danger lies, because changes here often are at the expense of portability, readability or maintainability. The first category are all no-brainers, while the second will often cause headaches, either now or in the future.Both categories are fully represented in this book, and even in the age of gigaflop desktop devices, the first should be implemented with all the due regard of a religion. For many of them save more than just clock cycles. In so many cases, the result is code that is much more elegant and easier to read, which translates into long-term savings. C++ is a very flexible, powerful language, but it does have some significant inherent performance hazards. Constructor calls are automatically generated by C++ compilers in many places where you would not on first pass suspect them. I have been teaching and writing C++ code for almost a decade and there were some that I had not thought about. However, once noted, they are relatively easy to avoid, a point where the authors are very clear. This feature alone is enough for managers to buy copies for all C++ developers and use the examples in this book to construct company wide coding guidelines. The second category is of course more problematic, but we all know that it happens. If you are ever in the situation where you must optimize further, even at the cost of portability and future maintenance, then you will appreciate the strategies enunciated in this book. Of the many C++ books that I have read in the many years that I have been working and reviewing, I firmly believe that this one may be the most valuable. Efficient code is still very important and in less than three hundred pages, the authors give you a plan that may save you precious body parts.
7 of 8 people found the following review helpful:
4.0 out of 5 stars
important information for any serious C++ developer,
By
This review is from: Efficient C++: Performance Programming Techniques (Paperback)
Few C++ books talk about such important aspects of programming like design and development for performance, as well as performance tuning. Even smaller number of them support their arguments with the actual test numbers. This book is different: on many occasions the authors show quantitative difference between techniques, which is very useful for understanding the trade-offs and is much more convincing than simply referring to common sense or authors' past experience.This book is a well-written overview of the C++ performance programming techniques. It looks into a broad spectrum of the issues, some of them are examined in a great detail, like C++ inlining. Most often there is no free lunch in software development, and the book does a good job of showing the trade-offs of performance techniques, keeps a good balance of not advocating extra efforts simply for the sake of having faster programs. The book has many coding examples that show "side-by-side" performance of different code snippets trying to achieve the same computational goal. The examples are very simple and are independent off each other, so one does not have to read all the previous chapters to understand a point made in the middle of the book. Elegance usually goes hand-in-hand with good performance, so if you are just a beginner in C++, this book will help you to polish the patterns of your programming style. I think that this book will be helpful to any C++ programmer, especially to one who is writing real-time or performance intensive applications. I wish the management could read and understand it too: hopefully then it wouldn't assume that "performance profiling" is just an afterthought and is not a necessary entry in the schedule for every serious product.
9 of 11 people found the following review helpful:
5.0 out of 5 stars
When efficiency matters, which is always, read this book,
By Charles Ashbacher (Marion, Iowa United States) - See all my reviews (TOP 500 REVIEWER) (VINE VOICE) (HALL OF FAME REVIEWER)
This review is from: Efficient C++: Performance Programming Techniques (Paperback)
There are two different categories of efficiency considerations: those that you do because they are necessary and those done only when necessary. The first category consists of those changes that make the code run faster and cleaner, whether it be on a silicon or carbon based CPU. The second category becomes significant when, no matter how clean your design and completion of the first category, the hard requirements are such that the executable just does not perform to the velocity specifications. This second category is where the danger lies, because changes here often are at the expense of portability, readability or maintainability. The first category are all no-brainers, while the second will often cause headaches, either now or in the future. Both categories are fully represented in this book, and even in the age of gigaflop desktop devices, the first should be implemented with all the due regard of a religion. For many of them save more than just clock cycles. In so many cases, the result is code that is much more elegant and easier to read, which translates into long-term savings. C++ is a very flexible, powerful language, but it does have some significant inherent performance hazards. Constructor calls are automatically generated by C++ compilers in many places where you would not on first pass suspect them. I have been teaching and writing C++ code for almost a decade and there were some that I had not thought about. However, once noted, they are relatively easy to avoid, a point where the authors are very clear. This feature alone is enough for managers to buy copies for all C++ developers and use the examples in this book to construct company wide coding guidelines. The second category is of course more problematic, but we all know that it happens. If you are ever in the situation where you must optimize further, even at the cost of portability and future maintenance, then you will appreciate the strategies enunciated in this book. Of the many C++ books that I have read in the many years that I have been working and reviewing, I firmly believe that this one may be the most valuable. Efficient code is still very important and in less than three hundred pages, the authors give you a plan that may save you precious body parts.
6 of 7 people found the following review helpful:
4.0 out of 5 stars
Very Helpful Overview of Performance Issues,
By
This review is from: Efficient C++: Performance Programming Techniques (Paperback)
I found this book to be quite helpful as a guide to areas in which C++ performance may be an issue. I was surprised by the vast difference in speeds caused by choice of allocation method, or how drastically the use of a C++ string object in a simple profiling class changed its performance (for the worse) compared to a character pointer.No book is perfect, but I think the prior reviewer's 1-star rating is overly harsh. I use C++ professionally every day, and have read many of the canonical books on the topic. I still found several items worth learning from this book.
3 of 3 people found the following review helpful:
3.0 out of 5 stars
Last section: System Architecture Dependencies, is the gold...,
By wintermute "zero" (right behind you) - See all my reviews
This review is from: Efficient C++: Performance Programming Techniques (Paperback)
Most of the book is similar to Meyers books. The last chapter is great. I don't know of any other book that presents this information, and this is what programmers screw up most when trying to write high performance code. This chapter discusses how to write extremely tight code considering the actual hardware you're running on (a lot of this is generalizable, since a lot of hardware is similar enough.). Things like writing code to avoid cache misses. Code that pipelines well. Replacing conditionals with small non-conditional code (avoid the branch). Context switching performance, etc.. Basically, this section is what gets you to actually think about the system you're writing software for. The real world, practical reality.
This topic is a must have, especially if you're writing a game engine or physics engine. Anything that needs to be as fast as possible, or faster than the competition... handling loads of data in real time. I gave the book 3 stars, because I really want a full book on this, not just a short chapter at the end as an afterthought. The authors however do cite 2 other books that they used to write this section, and I'm going to go check them out. As an introduction to hardware-minded performance optimization, this chapter is pretty cool. |
|
Most Helpful First | Newest First
|
|
Efficient C++: Performance Programming Techniques by Dov Bulka (Paperback - November 13, 1999)
$39.99 $29.29
In Stock | ||