Algorithmic efficiency
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
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