Penguin

Differences between version 4 and predecessor to the previous major change of Optimisation.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 4 Last edited on Wednesday, September 15, 2004 2:14:03 pm by AristotlePagaltzis Revert
Older page: version 3 Last edited on Thursday, September 2, 2004 10:01:15 am by JohnMcPherson Revert
@@ -1,11 +1,28 @@
-The process of making things better
+The process of improving SourceCode and/or its resulting MachineCode with regard to a certain aspect . Such aspects include:  
  
-Commonly programs are optimised for RunTime efficiency, that is, so they run as fast as possible , but a number of other things may be optimisation targets can also be used , including
+__Speed__::  
+ Does what it says: the program runs faster.  
+ This is the aspect commonly referred to when the term [Optimisation] is used.  
+__Object code size__::  
+ Reduces the size of large applications (such as browsers , office suites, and the like) or frequently downloaded code (such as scripts and applets on WebSite~s).  
+ As a side effect, [Cache] locality of the code improves , so performance will often benefit as well.  
+ This is the second most commonly referred to aspect of [Optimisation].  
+__Compilation time__ ::  
+ Improves the perceived responsiveness of code compiled dynamically in reaction to user requests.  
+__Threading__::  
+ Leverages the resources of [SMP] systems better, because MultiThreaded tasks can take advantage of multiple [CPU]s at once.  
  
-# Object code size - used mainly for frequently downloaded [Java]/[JavaScript] and to improve cache performance.  
-# Threading capability - used to enable a single task to be spread efficiently across multiple [CPU]s.  
-# Compilation time - used in scripts when perceived responsiveness is vital.  
-# Flexibility - the time to design/code new features.  
-# Portability - run on as many platforms as possible (requires avoiding platform-specific optimisation techniques)
+In practice, you always need a balance among these
  
-In practise non -trivial projects often find themselves balancing these. 
+----  
+  
+ Originally, StuartYeates also listed:  
+  
+ __Flexibility__::  
+ Reduces the effort and thus cost of designing and implementing new features.  
+ __Portability__::  
+ Allows deploying the SourceCode on more than one platforms.  
+ This often requires avoiding other, platform-specific [Optimisation] techniques.  
+  
+ Personally, I think it is a stretch to file these as [Optimisation]s . I have never heard them referred to as such, in any case. An appropriate term here is probably [Refactoring].  
+ <br>--AristotlePagaltzis