xx Preface
Performance is a term that can refer to many things, from functional (“Does it perform well
enough?”) to speed (“Does it perform fast enough?”). In this book we are interested in only the
latter aspect: speed. Other aspects of performance (accuracy, stability, robustness, etc.) are
not less important, but are outside the scope of this text.
If this book may seem verbose at times, this is because I have tried to explain the rea-
sons behind the recommendations, in the hope that users will gain insight. After all, this
book cannot cover every possible aspect in all possible situations; gaining insight will
enable readers to search for other ways to tune their specic program. Naturally, not all
the numerous individual speedup suggestions can be remembered. But in my experience,
once we understand and internalize the reasoning, we naturally “rediscover” these tech-
niques whenever we come across a situation that merits them.
This book contains a wide variety of suggestions. Some may not be relevant for a spe-
cic application, or we may decide not to use them for some reason (e.g., due to their extra
development and/or maintenance cost). Do not despair—plenty of other suggestions are
available that could be helpful. There are many ways to achieve our target performance
goals, so even if one technique fails, there are alternatives that we could try. In fact, there
are so many different ways to achieve these goals that we can take a pick based on aes-
thetic preferences and subjective experience: Some people use vectorization, others like
parallelization, some others prefer to invest in smarter algorithms, others trade memory
for performance, still others display a GUI that gives the impression of being fast.
All of these routes and more are valid alternatives for making a program answer user
expectations of speed and responsiveness. Moreover, it is expected that readers will
become more procient in efcient programming techniques, such that their programs
will run faster in the rst place, even before any tuning is actually done.
The book is meant as a generic reference for MATLAB performance tuning. As such, it
does not include detailed discussion of domain-specic topics such as numerical analy-
sis, optimization, statistics, algorithms, or image processing. These topics are well worth
discussing for performance aspects, but they too are outside the scope of this book. Some
discussion is included, but is not intended to be comprehensive nor detailed. Interested
readers are referred to dedicated works on these specic topics.
Book Organization
This book is organized in chapters grouped by related functionality/usage. It is not nec-
essary to read the book in order: the chapters and sections are mostly independent and
stand alone. You can safely skip parts that you nd difcult or uninteresting.
We begin with a theoretical description of performance tuning in Chapter 1. The discus-
sion includes typical pitfalls, tradeoffs, and considerations that need to be kept in mind
before and during any tuning process. Chapter 1 is not meant to be a comprehensive dis-
cussion of the theory of performance tuning; there are other books fully devoted to this
subject. In contrast, I attempted to describe the essence of the major practical issues as I see
them. It should be noted that this is not an exact science, and my subjective opinions on
tradeoff considerations may well be disputed by others. Still, I hope that by reading this
chapter, readers will at least be exposed to the underlying questions and considerations that
relate to performance tuning, even if they disagree with my analysis or recommendations.