Differences between version 4 and revision by previous author of Optimisation.
Other diffs: Previous Major Revision, Previous Revision, 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