The Art of Writing Efficient Programs: An advanced programmer's guide to efficient hardware utilization and compiler optimizations using C++ examples
A**R
Fabulous book, it connects what you learned in school to real life situations
Fabulous book, it connects what you learned in school to real life situations. Even after years in the industry, unless you are on the forefront of performance optimization many of these knowledge are gonna help you. In theory I have learned all these in school but school knowledge here has not connect with industry experiences and this book did it.
V**T
Amazing book regarding low level programming and extracting power from hardware
This book really teaches beginners and opens eyes on some subjects for experienced developers.Branch prediction articles were most beneficial to me - many open eyes techniques - thank you! - and it makes you think, again ...Memory management - at least I got confirmation what is wrong and what is right :).Either way - book is fun to read - it is like "Dune" but for developers - intriguing, you wait for - what gonna happen next? with some light humor.I would recommend this book to any level of serious software developers/engineers.This book deserves 5 stars.-- this review form 30+ years experience C++ software developer, and counting
D**I
Good content
The book's layout is poorly designed. For example, there's an unnecessary gray background in the source code sections, which could have been improved by highlighting only the important parts with a gray background and using bold for keywords. While the content of the book is quite good and interesting to read, the layout is frustrating.
A**R
Outstanding book
Lots of excellent insight regarding designing and writing high performance software. I particularly enjoyed his explanations regarding coroutines. Will definitely be referring back to this book during my next project.
S**E
The book I've been waiting for
I've wanted a book like this for a long time which examines the subject clearly and thoroughly from a modern perspective...a joy to read.
V**R
Better than I expected
When I saw that this book was 451 pages, my initial reaction was, "Oh, no, not another fluff piece packed with excess meanderings..." After all, I'm a real-time embedded systems programmer with more than 30 years of experience, and I didn't really expect that I would learn enough to justify slogging through 400+ pages of material.By the middle of the first chapter, I was pretty thoroughly disabused of that hubris. Fedor G. Pikus is a real heavyweight in this field. I don't know if he has an advanced degree -- he doesn't list one -- but I would imagine that he is one of those folks who has just been too busy to pursue one. He's got a list of publications and research papers that spans several pages of web search hits.Mr. Pikus did an incredible job with this book. He explains some counter-intuitive concepts with a straightforward clarity that left me somewhat embarrassed with how little I knew, and how much I just took for granted because somebody just told me to do something in a particular way at some point in my career. And there were some things that I *did* know, but he explained in a way much better than I had seen before.It's not an easy read. In order to get the most out of this book, you have really go through every example very carefully. Fortunately, the examples use tools that are readily available in the open-source world.While I still think that choice of algorithm dwarfs all other considerations combined, Mr. Pikus showed that the choice of the most appropriate algorithm is not always obvious, sometimes for very obscure reasons. So, how does one choose? Pikus demonstrated the use of several tools that can help.Unfortunately for me, I'm working in an environment where the actual target hardware and OS is not yet available, so I have to rely on simulations which might be sub-optimal. But I expect that when I do get to the point in this project that I get to test with the actual target system, that this book will come in handy. It is well organized, and will be a useful reference.In summary, this is one of the best-written books on this subject that I have seen to date.
J**L
Solid content but print quality could be improved
The book's contents are useful, especially as a first introduction to system programming with performance concerns in mind. Only four starts because the quality of the printing can be distracting. The code snippets are zebra striped (alternating dark and light lines) and some terminal output look like they're just screenshots of an Ubuntu terminal instead of also being typeset. The net effect is a presentation that sometimes gets in the way of the content being presented.
P**A
Loved it
The only thing I believe these types of books miss is a proper application. It's easy and good to explain performance and efficiency with simple examples but, at the end of the day, we are not just writing a sorting algorithm.
O**N
Highly inspiring book for C++ developers.
The book provides in-depth guide to writing high performance software, with many code examples. Every software engineer who needs to get the most out of their software and hardware should look into this.
E**Ä
Solid book on hard topic
One of the few books on efficient and parallell programming with enough breadth and depth of content.
K**R
Good Introduction to the essential performance aspects for aspiring C++ developers
The need for performance is back: While performance was not the most important topic during the crazy clockspeed improvements in the' 90s and 2000s, today performance again plays a major role in software development. Whether it is to reduce costs when computing something in the cloud or to increase the duration of your battery, performance is important again, and in particular in C++.From this perspective, Fedor's book is a valuable and necessary addition to the available C++ book selection. It is a comprehensive volume on many different aspects of performance. Starting with essential questions like "What is performance?", it covers performance benchmarking and profiling, performance tools, and low-level code optimization, concurrency and design for performance. For that reason it provides insight into many different aspects of optimization. Targeted at less-experienced programmers, it always keeps a reasonable pace and explains even the most basic aspects.I personally consider the chapters about performance profiling and benchmarking as a very valuable addition, since these topics are rarely touched in such a comprehensive way. Unfortunately there were also a couple of letdowns. For instance, I personally felt that advanced topics like lock-free programming were handled too quickly and without much depth. There is very little information beyond the terminology. Also, I was expecting more from the "Design for Performance" chapter. Unfortunately many essential design aspects, as for instance "Separation of Concerns" and the need to design interfaces for performance from the very beginning, are not mentioned at all. For my personal taste, the given advice is too abstract and too few concrete examples are given on how to apply the design advice on real code.Overall this is a good introduction to the essential performance aspects in software development for aspiring C++ developers.
A**.
The graphics are unreadable, and that really hurts understanding
The print is in black and white, but the graphics were clearly done with color in mind. The text assumes the graphics are readable, and that more often than not hurts understanding. The content is fine, but generality not of great quality in terms of formatting, conciseness, and clearness of explanation.
Trustpilot
1 day ago
5 days ago