备忘录是一种用于优化经常执行功能的性能的技术。它涉及缓存函数调用的结果,以便可以通过相同的参数返回相同的结果,而不是每次重新计算它们。
备忘录基于以下想法:如果多次使用相同参数调用函数,则每次都会返回相同的结果。因此,缓存第一个函数调用的结果并将其返回的所有随后的呼叫都具有相同的参数。
是有意义的。记忆过程涉及创建一个缓存对象,该对象用于存储函数调用的结果。当使用一组参数调用函数时,检查缓存对象以查看这些参数的结果是否已经存在。如果这样做,则返回缓存结果;否则,将执行该功能,并将结果存储在缓存对象中以供将来使用。
回忆对于在计算上昂贵或具有复杂逻辑的功能特别有用。通过缓存第一个呼叫的结果,可以快速执行具有相同参数的后续呼叫,而无需重复相同的计算。
在node.js中,可以使用多种技术来实现纪念活动。一种常见的方法是使用JavaScript对象存储缓存的结果。这是一个简单的回忆功能的示例:
function memoize(func) {
const cache = {};
return function(...args) {
const key = JSON.stringify(args);
if (cache[key]) {
return cache[key];
}
const result = func.apply(this, args);
cache[key] = result;
return result;
};
}
此函数将函数作为参数,并返回一个新功能,该功能将原始功能用回忆包装。缓存对象是作为空的JavaScript对象创建的,并返回一个新功能,该功能将用于执行记忆函数。
使用“ vrize语法” ... ARGS进行了回忆的函数,采用可变数量的参数。这些参数使用JSON.STRINGIFY()方法将这些参数转换为字符串,该方法用作缓存对象的键。如果键存在在缓存中,则返回缓存结果。如果不是,则使用apply()方法执行原始函数,并且结果存储在缓存对象中以供将来使用。
以下是如何使用回忆函数的示例:
function fibonacci(n) {
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
const memoizedFibonacci = memoize(fibonacci);
console.log(memoizedFibonacci(10)); // Output: 55
console.log(memoizedFibonacci(10)); // Output: 55 (cached result)
在此示例中,fibonacci()函数计算给定数字的斐波那契序列。 Memoize()函数用于创建一个新函数备忘录FibonAcci,该函数将fibonacci()函数用备忘录包装。然后使用相同的参数调用MemoizedFibonAcci()函数两次调用,并在第二个调用上从缓存对象返回结果。
纪念活动是一种强大的技术,可以大大提高node.js应用程序的性能。通过缓存经常执行的功能的结果,您可以避免重复昂贵的计算并减少整体处理时间。
备忘录是优化执行SQL查询功能的性能的有效技术之一。通过缓存以前查询的结果,可以快速提供具有相同参数的随后呼叫,而无需重新执行查询。改善性能的另一种方法是使用实现的表,将查询的结果存储在物理表中,以便随后的查询可以直接从表中取出预估计的结果。您对实体表主题感兴趣吗?我在另一篇文章中讨论了它。