Category
page 1Software optimization
program optimization
process of modifying software to improve efficiency or performance
flyweight pattern
software design pattern for objects which shares data with similar objects to minimize memory
lookup table
array data structure that replaces runtime computation with a simpler array indexing operation
copy-on-write
Copy-on-write (COW), also called implicit sharing or shadowing, is a resource-management technique used in programming to manage shared data efficiently. Instead of copying data right away when multiple programs use it, the same data is shared between programs until one tries to modify it. If no changes are made, no private copy is created, saving resources. A copy is only made when needed, ensuring each program has its own version when modifications occur. This technique is commonly applied to memory, files, and data structures.
algorithmic efficiency
amount of computational resources used by an algorithm
profiling
technique of measuring the amount of time or other resources used by different components of an executing computer program
memoization
In computing, memoization or memoisation is an optimization technique used primarily to speed up computer programs. It works by storing the results of expensive calls to pure functions, so that these results can be returned quickly should the same inputs occur again. It is a type of caching, normally implemented using a hash table, and a typical example of a space–time tradeoff, where the runtime of a program is reduced by increasing its memory usage. Memoization can be implemented in any programming language, though some languages have built-in support that make it easy for the programmer to
locality of reference
principle describing a tendency to repetitively accessing similar memory location sets momentaneously
object pool pattern
pattern to construct sets of initialised programming objects that are kept ready to use
space–time tradeoff
case where an algorithm or program trades increases space usage with decreased time
overhead
any combination of excess or indirect computation time, memory, bandwidth, or other resources that are required to perform a specific task

software performance testing
procedure to determine how a system performs in terms of responsiveness and stability under a particular workload
inline function
function in C or C++ subject to inline expansion
minimalism (computing)
philosophy of computing
software bottleneck
limiting factor in software engineering
zero-copy
instrumentation
enabling of code tracing, debugging and profiling in computer programming
tracing just-in-time compilation
technique used to optimize the execution of a program at runtime
approximate computing
computation of possibly inaccurate results, but typically faster and more energy efficient