Memoization, som liknar memorering men specifikt för datorer, är en metod för att optimera ett programs hastighet genom att öka mängden utrymme som det använder. Vad denna teknik direkt innebär är att ett program är byggt för att komma ihåg beräkningarna av en funktion, och resultatet lagras i en cache. Nästa gång funktionen anropas kan programmet hämta beräkningen från cachen istället för att göra om samma beräkning. Till skillnad från styrkeminskning, som snabbar upp maskinen baserat på en liknande hastighet och utrymmesavvägning, är memoization bärbar och kan användas över många maskiner.
Användare kanske inte ser det, men program gör beräkningar hela tiden. När någon klickar på en knapp på ett program eller använder en inneboende funktion krävs en beräkning för att det ska fungera. Ofta kommer användaren att använda samma funktion flera gånger utan någon förändring. Utan memoisering på plats, även om programmet just utförde en beräkning, skulle det behöva göra det igen. Detta gör programmets hastighet långsammare än om det lagrat resultatet.
Resultatet av en beräkning lagras i ett cacheminnesområde. Med memoisering, när användaren utför samma eller liknande inmatning, kommer programmet att dra från cachen istället för att utföra beräkningen för att få svaret. Genom att göra detta sparar programmet tid och blir optimerat och snabbare. Inmatningen kan vara likartad och inte exakt densamma, så vissa beräkningar kanske inte är helt korrekta, men felaktigheten är vanligtvis mycket liten och kommer sannolikt inte att orsaka fel.
Memoiseringstekniken utför i huvudsak en avvägning. Alla program är byggda med storleks- och tidsbegränsningar. Här offras storleken så hastigheten kan öka. Resultaten lagras i cachen, så det behövs mer minne för programmet. Mängden minne som offras är mycket liten, eftersom en cache är begränsad i mängden resultat den kan lagra, men det ökar ändå utrymmeskostnaden.
En annan liknande, men inte lika tillförlitlig, avvägningsoptimeringsteknik är hållfasthetsminskning. Styrkreducering minskar inte styrkan i programmet utan styrkan i beräkningen genom att dela upp det i svagare, mindre minneskostsamma funktioner. Till exempel kräver multiplikation en längre tid att bearbeta än addition, så formeln kommer att ändras för att möjliggöra den mindre tidskrävande processen. Denna teknik kan påskynda processer, men besparingarna kanske inte syns på alla maskiner och det sparar bara kompileringstid.