Difference between revisions of "Algorithmic efficiency"
Karl Jones (Talk | contribs) (→See also) |
Karl Jones (Talk | contribs) (→See also) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 16: | Line 16: | ||
* [[Algorithm design]] | * [[Algorithm design]] | ||
* [[Algorithmic game theory]] | * [[Algorithmic game theory]] | ||
− | * [[Analysis of algorithms]] | + | * [[Analysis of algorithms]] - how to determine the resources needed by an algorithm |
+ | * [[Arithmetic coding]] - a form of [[Variable-length code|variable-length]] [[Entropy encoding|entropy encoding]] for efficient data compression | ||
+ | * [[Associative array]] - a data structure that can be made more efficient using Patricia trees or Judy arrays | ||
+ | * [[Benchmark]] - a method for measuring comparative execution times in defined cases | ||
+ | * [[Best, worst and average case]] - considerations for estimating execution times in three scenarios | ||
+ | * [[Binary search algorithm]] - a simple and efficient technique for searching sorted arrays | ||
+ | * [[Branch table]] - a technique for reducing instruction path-length, size of machine code, (and often also memory) | ||
+ | * [[Comparison of programming paradigms]] - paradigm specific performance considerations | ||
+ | * [[Compiler optimization—compiler-derived optimization]] | ||
+ | * [[Computational complexity of mathematical operations]] | ||
+ | * [[Computational complexity theory]] | ||
+ | * [[Computer performance]] - computer hardware metrics | ||
+ | * [[Data compression]] - reducing transmission bandwidth and disk storage | ||
+ | * [[Database index]] - a data structure that improves the speed of data retrieval operations on a [[database table]] | ||
+ | * [[Entropy encoding]] - encoding data efficiently using frequency of occurrence of [[String (computer science)|strings]] as a criterion for substitution | ||
+ | * [[Garbage collection]] - automatic freeing of memory after use | ||
+ | * [[Green computing]] - a move to implement 'greener' technologies, consuming less resources | ||
+ | * [[Huffman algorithm]] - an algorithm for efficient data encoding | ||
+ | * [[Improving Managed code Performance]] - Microsoft MSDN Library | ||
+ | * [[Locality of reference]] - for avoidance of caching delays caused by non-local memory access | ||
+ | * [[Loop optimization]] | ||
+ | * [[Memory management]] | ||
+ | * [[Optimization (computer science)]] | ||
+ | * [[Performance analysis]] - methods of measuring actual performance of an algorithm at run-time | ||
+ | * [[Real-time computing]] - further examples of time-critical applications | ||
+ | * [[Run-time analysis]] - estimation of expected run-times and an algorithm's scalability | ||
+ | * [[Simultaneous multithreading]] | ||
+ | * [[Speculative execution]]]] or [[Eager execution]]]] | ||
+ | * [[Super-threading]] | ||
+ | * [[Threaded code]] - similar to virtual method table or branch table | ||
+ | * [[Virtual method table]] - branch table with dynamically assigned pointers for dispatching | ||
== External links == | == External links == |
Latest revision as of 10:32, 20 September 2016
In computer science, algorithmic efficiency are the properties of an algorithm which relate to the amount of computational resources used by the algorithm.
Description
An algorithm must be analysed to determine its resource usage. Algorithmic efficiency can be thought of as analogous to engineering productivity for a repeating or continuous process.
For maximum efficiency we wish to minimize resource usage. However, the various resources (e.g. time, space) cannot be compared directly, so which of two algorithms is considered to be more efficient often depends on which measure of efficiency is considered the most important, e.g. is the requirement for high speed, or for minimum memory usage, or for some other measure?
Not to be confused with optimization
Note that this article is not about optimization, which is discussed in program optimization, optimizing compiler, loop optimization, object code optimizer, etc. The term 'optimization' is itself misleading, since all that can generally be done is an 'improvement'.
See also
- Algorithm
- Algorithm design
- Algorithmic game theory
- Analysis of algorithms - how to determine the resources needed by an algorithm
- Arithmetic coding - a form of variable-length entropy encoding for efficient data compression
- Associative array - a data structure that can be made more efficient using Patricia trees or Judy arrays
- Benchmark - a method for measuring comparative execution times in defined cases
- Best, worst and average case - considerations for estimating execution times in three scenarios
- Binary search algorithm - a simple and efficient technique for searching sorted arrays
- Branch table - a technique for reducing instruction path-length, size of machine code, (and often also memory)
- Comparison of programming paradigms - paradigm specific performance considerations
- Compiler optimization—compiler-derived optimization
- Computational complexity of mathematical operations
- Computational complexity theory
- Computer performance - computer hardware metrics
- Data compression - reducing transmission bandwidth and disk storage
- Database index - a data structure that improves the speed of data retrieval operations on a database table
- Entropy encoding - encoding data efficiently using frequency of occurrence of strings as a criterion for substitution
- Garbage collection - automatic freeing of memory after use
- Green computing - a move to implement 'greener' technologies, consuming less resources
- Huffman algorithm - an algorithm for efficient data encoding
- Improving Managed code Performance - Microsoft MSDN Library
- Locality of reference - for avoidance of caching delays caused by non-local memory access
- Loop optimization
- Memory management
- Optimization (computer science)
- Performance analysis - methods of measuring actual performance of an algorithm at run-time
- Real-time computing - further examples of time-critical applications
- Run-time analysis - estimation of expected run-times and an algorithm's scalability
- Simultaneous multithreading
- Speculative execution]] or Eager execution]]
- Super-threading
- Threaded code - similar to virtual method table or branch table
- Virtual method table - branch table with dynamically assigned pointers for dispatching
External links
- Algorithmic efficiency @ Wikipedia