What can you do when your software executes too slowly? This paper explores the alternatives and shows you the changes you can make to improve its speed. It considers many alternatives, including changes to hardware, algorithm design, compiler options, source code, and assembly, and compares the tradeoffs of
each. It presents a broad spectrum of software methods that can be used with many different types of applications running on a wide variety of microprocessors and microcontrollers, covering topics such as: identifying , analyzing and reducing algorithm time complexity, precomputing tables, restructuring loops, and processing bits or bytes in parallel.