Electronic Review of Computer Books

[ ERCB Home | New | Feature | Brief | DDJ | Letters | Links ]

[an error occurred while processing this directive]

Vital Statistics

Title

Inner Loops

Author

Rick Booth
http://ourworld.compuserve.com/homepages/rbooth/

Publisher

Addison-Wesley Publishing Company, Inc.
Reading, Massachusetts
http://www.aw.com/devpress/

Copyright

1997

ISBN

0-201-47960-5

Pages

364

Media

CD-ROM

Price

$39.95


Faster than a Speeding Bullet

The market for sophisticated assembly language programming books melted down in the early 1990's -- a victim of the emergence of RAD tools such as Visual Basic and Delphi, the increasing complexity of operating environments, the fragmented installed base of 32-bit platforms, the general decline in Western Civilization, and last but hardly least, the precedent-shattering piggishness of Microsoft MASM version 6. What little a person could still find to read on this subject in the last few years was pretty much the sole output of Michael Abrash, the 500-pound-gorilla of cycle-shaving.

Abrash dropped off the radar screen to pursue his career at Microsoft and then ID Software about the time Pentium sales were really ramping up, and no one emerged to take his place -- until now. Software engineer Rick Booth, a 17-year veteran of the video game and digital video industries, has delivered the most interesting and astute treatise on performance programming that I've read in many years. The Intel Pentium, and its hideously complex and barely-deterministic successor the Pentium Pro, have met their match in Inner Loops.

The first section of the book, entitled "Theory," focuses on the Intel 32-bit architecture and the mechanics of 32-bit assembly language programming. A quick introduction to the instruction set and MASM 6's structured syntax is followed by an overview of C code generation and detailed chapters on specific optimization issues for the 486, Pentium, Pentium Pro, and MMX. There is much precious information here that I have never seen spelled out clearly anywhere else, presented in a format that makes it straightforward to compare one processor's idiosyncracies against the others.

The second part of Inner Loops, entitled "Practice," consists of short chapters exploring a number of different optimization scenarios: moving memory, generating random numbers, hashing, binary tree searching, sorting, Huffman compression, matrix multiplication, and JPEG image decompression. Booth makes these topics sparkle with an easy writing style, a willingness to experiment, a rich reservoir of practical experience, an intimate familarity with the CPU architecture, and a comfortable relationship with the underlying mathematics.

When superscalar microprocessors first appeared, pundits predicted that assembly language programming would become totally irrelevant as an optimization tool -- only a compiler would be able to perform the code rearrangements that would wring maximum performance out of the new generation of CPUs. After reading Booth's book and marveling over his examples of coiled loops, tandem loops, cache-specific move subroutines, and other exotica, I see that the situation is exactly otherwise -- having a creative, persistent human mind in the picture is more important than ever.

-- Ray Duncan (duncan@cerf.net)


Quick Rating

Readability Star Star Star HalfStar
Originality Star Star Star Star
Organization Star Star Star
Accuracy Star Star Star Star
Consistency Star Star Star
Depth Star Star Star Star
Timeliness Star Star Star Star
Editing Star Star Star Star
Design Star Star Star
Overall Value Star Star Star HalfStar

Explanation of ERCB rating scale: No stars = unacceptable, 1 Star = marginal, 2 Stars = average, 3 Stars = above average, 4 Stars = exceptional.


Copyright © 1997 Electronic Review of Computer Books
Created 04-07-97 / Last modified 04-09-97 / webmaster@ercb.com