首页 > 代码库 > 在网站中数据缓存的重要性
在网站中数据缓存的重要性
通过计算斐波那契数列明白缓存在网站开发中的重要性
1 、首先测试一下没有使用数据缓存来计算斐波那契数列。
var count = 0; function fib(n) { count++; if(n === 0 || n === 1) { return 1; } return fib(n - 1) + fib(n - 2); } fib(40); console.log(count);//count是函数fib运算次数,当fib(40)时候运行次数高达:331160281次,感兴趣的可以检测一下。
2、下面我们看看使用数据缓存来计算斐波那契数列。
// 缓存是怎么使用的? // 一般的缓存结构就是:键值对(对象 或者 数组) // var obj = {}; // var arr = []; // 使用缓存的方式: // 1 先去缓存中查找有没有键对应的数据 // 2 如果有,就直接拿过来使用 // 3 如果没有,就计算或者是查询到,然后,要放到缓存中! // 4 以后,就通过缓存来去数据 // 简化的步骤:先去缓存中查询有没有,如果没有就计算,并将结果放到缓存中 // 问题:缓存放到什么位置去?? // 如果是全局变量,此时,任何人都能修改全局变量的内容 // 那就造成:数据不准确 // var obj = {}; // 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89.... var count = 0; var fib = (function() { // 使用闭包,将缓存放到闭包中去, // 此时,就对这个缓存起到了保护的作用 // var cache = {}; var cache = []; // 这个函数使用来计算:斐波那契数列 return function(n) { count++; // 1 先去缓存中查找有没有该键对象的值 if(cache[n] !== undefined) { // 2 如果有,就直接返回当前的值 return cache[n]; } // 3 如果没有,就计算,然后要添加到缓存中去 if(n === 0 || n === 1) { // return 1; cache[n] = 1; return cache[n]; } var temp = arguments.callee(n - 1) + arguments.callee(n - 2); // 放到缓存中去 cache[n] = temp; return cache[n]; }; })(); fib(40); console.log(count);// 计算次数为:79次。
通过上面两次对比,瞬间觉得数据缓存的重要性,由331160281次下降到79次。感兴趣的屌丝可以测试一下fib(50);的运行次数,不使用数据缓存我测试了,我的浏览器崩溃了,使用数据缓存运行才99次。
在网站中数据缓存的重要性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。