Intel optimization best practices: no magic, just discipline and good tools
Optimization best practicesOptimization is not a form of black magic, but a regular part of software development. But with good tools and good process, you will definitely produce faster and better code
by Andrew Binstock, principal analyst, Pacific Data Works LLC. Intel Corp.
Want optimized code? Learn optimization methodology and the best known methods used by Intel optimization engineers.
Donald Knuth’s observation is a way of saying that software optimization is often poorly planned and done without the careful methodology and rigor that accompanies other software-development processes. The widespread, undisciplined view of optimization process derives from several perceptions that are largely incorrect. The first of these is that optimization is more of an art than a science. This perspective, which rankles optimization professionals, suggests there is some magic to good optimization. In fact, the thoughtful application of tools and methodology removes much of the mystery and mystique of optimization. It is hard, disciplined work—much like everything else in software development. The other common misperception is that optimization is an after-thought. This view reflects the reality that developers are so pressed to get tested software out the door that there is little time for the luxury of optimization. Only once a disaster occurs—a month-end that couldn’t close because of processing time or a sale not made because of competitors’ better performance—only then is optimization accorded an elevated (and generally short-lived) prominence. To be good at optimization, a different view is necessary.
This white paper describes the methodology and best known methods used by Intel optimization engineers. These processes have been proven over more than a decade of use and are an excellent template for developing best methods for in-house optimization projects.
Top-down, closed-loop approach
The Intel methodology employs a top-down, closed-loop model. The top-down aspect does not refer to the top-down approach familiar to programmers from structured programming. That concept suggests that code should be designed from a mainline that branches off into successively smaller building blocks. That is a logical, structured design. In the optimization field, top and bottom depend not on a logical relationship but on a purely practical dimension: you must first optimize the elements whose performance masks or affects the performance profile of other elements. For example, you would make sure your memory allocations were optimized before you started tuning block sizes loaded into processor caches. But before tuning memory allocations, you would make sure that the system’s memory bus was overloaded—that factor alone could account for poor performance. Later in the paper, we’ll examine the steps in this top-to-bottom progression.
by Andrew Binstock, principal analyst, Pacific Data Works LLC. Intel Corp.
Want optimized code? Learn optimization methodology and the best known methods used by Intel optimization engineers.
"Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." |
This white paper describes the methodology and best known methods used by Intel optimization engineers. These processes have been proven over more than a decade of use and are an excellent template for developing best methods for in-house optimization projects.
Top-down, closed-loop approach
The Intel methodology employs a top-down, closed-loop model. The top-down aspect does not refer to the top-down approach familiar to programmers from structured programming. That concept suggests that code should be designed from a mainline that branches off into successively smaller building blocks. That is a logical, structured design. In the optimization field, top and bottom depend not on a logical relationship but on a purely practical dimension: you must first optimize the elements whose performance masks or affects the performance profile of other elements. For example, you would make sure your memory allocations were optimized before you started tuning block sizes loaded into processor caches. But before tuning memory allocations, you would make sure that the system’s memory bus was overloaded—that factor alone could account for poor performance. Later in the paper, we’ll examine the steps in this top-to-bottom progression.
![]()
If you're interested in this topic, these articles may be helpful:
![]() | Guidance for securing Microsoft Windows XP systems for IT professionals from National Institute of Standards and Technology Guidance for se... |
![]() | Beyond Software Architecture: Creating and Sustaining Winning Solutions, Chapter 8 - Integration and Extension by Luke Hohmann. Publisher: Addison-Wesley and Prentice Hall. As de... |
![]() | Intel C++ Compiler 8.1 for Windows free evaluation software This product provides tools for Windows software developers to creat... |
![]() | Show Us Your Threads and Win an Intel® Core 2 Duo iMac* It’s All About Personal Expression! You express yourself through so... |
![]() | The art of graceful application suspension by Lynn Merrill. Intel Corp. Does this sound familiar? You're worki... |
![]()
Related Jobs:
![]() | ProACT Engineer BRAS #U04802 - VA - Herndon - Juniper Networks, Inc. ProACT Engineer BRAS (Staff Engineer) Herndon, VA Position: Proact... |
![]() | Business Analyst for SPE Project #2389818 - NY - New York - Ajilon Description : Position Description: Project Description Investmen... |
![]() | System Analyst I #0079346 - MI - Kalamazoo - IndyMac Bancorp, Inc. Post Date 8/3/2006 Requisition Number 0079346 Job Title System Ana... |
![]() | System Analyst I #0080462 - MI - Kalamazoo - IndyMac Bancorp, Inc. Post Date 10/23/2006 Requisition Number 0080462 Job Title System A... |
![]() | Software Development Engineer #144338 - WA - Redmond - Microsoft Corporation Looking for the next ‘wow’ product, a v1 being built to enter the grow... |
![]() | Graphics System Architect - OR - Hillsboro - Intel Intel\'s Visual Computing Group is seeking Graphics System Architects ... |
![]() | Business Analyst for SPE Project #2252953 - NY - New York - Ajilon Consulting Title : Business Analyst for SPE Project Posted : 08-04-2005 ... |
![]() | Software Engineer #N02641 - NJ - Totowa - BAE Systems Description: Software Engineer with the ability to participate in var... |
![]() | Software Development Engineer #143138 - WA - Redmond - Microsoft Corporation Craving for an opportunity to build V1.0 of a brand new distributed st... |
![]() | Unix Technical Lead #ORB00000SB - IL - Chicago - Orbitz, LLC Unix Technical Lead – ORB00000SB Job Description Ap... |

