the rendered images would be trading space for time; more space used, but less time. This technique is more generally known as caching. Smaller code vs. loop unrolling Larger code size can be traded for higher program speed when applying loop unrolling. This technique makes the code longer for each iteration of a loop, but saves the computation time required for jumping back to the beginning of the loop at the end of each iteration. Other examples Algorithms that also make use of space–time tradeoffs include: Baby-step giant-step algorithm for calculating discrete logarithms Rainbow tables in cryptography, where the adversary is trying to do better than the exponential time required for a brute-force attack. Rainbow tables use partially precomputed values in the hash space of a cryptographic hash function to crack passwords in minutes instead of weeks. Decreasing the size of the rainbow table increases the time required to iterate over the hash space. The meet-in-the-middle attack uses a space–time tradeoff to find the cryptographic key in only encryptions (and space) versus the expected encryptions (but only space) of the naive attack. Dynamic programming, where the time complexity of a problem can be reduced significantly by using more memory. See also References External links Philippe Oechslin: Making a Faster Cryptanalytic Time-Memory Trade-Off. Once Upon a Time-Memory Tradeoff. Software optimization