|
|
Software Speed Optimization · Performance Optimization · High Performance Computing · Number Crunching · C/C++ · Assembly/Assembler · SIMD · MMX · SSE · SSE2 · SSE3 · 3DNow! |
|
|
|
||||
|
Platforms |
Software Speed OptimizationThis page discusses and explains the key issues of Software Speed Optimization:
What is Software Speed Optimization?Software can be optimized in a number of ways:
Optimizing software for execution speed or, somewhat shorter, Software Speed Optimization, is the type of optimization dealing with the reduction of execution duration for executing some piece of code by designing and implementing the software in an appropriate manner. This should not be confused with another type of speed optimization: The optimization of software packages by some sort of configuration settings. This kind of optimization could be called "Software Package Speed Optimization". An example for this is are optimizations of database applications by configuring the database or the used data types etc. Another example is the "tuning" of an operating system by setting the size of swap files or file/font/etc. caches. The difference between the two are that "Software Speed Optimization" deals with the source code of that piece of software actually being executed by the hardware whereas "Software Package Speed Optimization" does not. In the context of Hayes Technologies the term "Software Speed Optimization" is only used according to the definition above.
What Influences is Execution Speed?The execution speed is basically influenced / defined by:
Besides this, obviously also the hardware configuration plays a major role. But this is another topic outside of the scope of Software Speed Optimization; however, the interaction of Software Speed Optimization and Hardware Optimization must always be considered.
Why Optimize Software?This is a critical question. You may think:
Obviously these arguments are valid in many cases. But let us look a little closer:
And these are not the only arguments for Software Speed Optimization, here are a couple more:
Another important aspect for a whole class of applications, those, where power consumption is critical, is the following:
And finally one of the most cost saving and risk lowering points have to be made:
What Speed-Ups Can be Expected from Software Speed Optimization?This depends largely on the specific context and on the effort put into the Software Speed Optimization. Basically, if the functions / modules in question are not already highly tuned (i.e. math routines from the compiler manufacturer) and the task is not I/O-bound (limited by the speed of the memory or hard disk etc.) and the task is not rather simple (i.e. element-wise addition of 2 arrays, matrix multiplication etc.) then the possible speed-up factors are in many cases in the range 2 .. 5. And in some cases significantly higher. That is as if your software would run on a machine with speeds of up to 10 GHz or even more than 20 GHz! (assuming a 2 GHz machine as base)
Why can the speed-up factor be so high? The key reasons for this are:
Please also see the case studies which contain achieved speed-up factors and the technology section which explains some of the reasons for the speed-ups in more detail.
Hayes Technologies can analyze the potential for speed-up and give you an estimate of the required effort.
Why Hire an Expert for Software Speed Optimization?Basically nothing stops you from tackling the Software Speed Optimization issue yourself. However, reality clearly shows that only very few teams or organizations actually address this task in an appropriate manner. Not without reason: The key reason for this is that Software Speed Optimization is a discipline by itself which requires massive knowledge and experience, similar maybe to, say, writing device drivers or operating system kernels. In addition to standard programming skills an expert in Software Speed Optimization must posses:
Typically this means that either this skill set is not available in-house or it may be available but the opportunity costs are very high, because it implies that the most experienced developers can not focus on other important tasks, probably leading to delays, sub-optimal software design, down-scaling of features etc. and, as the final consequence, reduction of earnings.
Taking all issues into account will in most cases clearly not only justify but require an external expert. |
|
Platforms: x86 · Pentium · Pentium MMX · Pentium II · Pentium III · Pentium 4 · Core · Core 2 · Xeon · Itanium · Athlon · DSPs · Embedded CPUs · Windows · Linux · RTOSs Especially Benefiting Application Areas: Image Processing · Signal processing · High Performance Computing / Number Crunching · Simulations · Compression · Games · 3D Software · Device Drivers · Multi-processor Systems · Multi-Computer Systems / Clusters · Embedded Devices · Real-time Systems · Interactive Systems · And many more... |
|
Last change: Dec. 10, 2007
|