缓存函数memorize

 1 function mulity(x){
 2             return x*x;
 3         }
 4     function memorize(f){
 5             var cache  = {};
 6             var key = arguments.length + Array.prototype.join.call(arguments,",");//参数长度和参数作为属性
 7             if(key in cache)
 8                 return cache[key];
 9             else
10                 return cache[key] = f.apply(this,arguments);
11         };
12
13     function Test(){
14             var t = memorize(mulity);
15                 var k =t(6);//第一次是直接算
16                 var k2 =t(6);//第二次是调用缓存
17                 alert(k2);
18         }

缓存函数是把计算的结果,存在函数中,当再次调用的时候就可以直接调用,这种方法就是用空间来换取时间

时间: 2024-10-09 19:59:22

缓存函数memorize的相关文章

写一个根据id字段查找记录的缓存函数(javascript)

前不久在参加面试的时候遇到了这样一道题,"写一个根据id字段查找记录的缓存函数,如果之前查过,则直接返回之前查找过的对象,而无须重新查找".当时由于时间较短加上时间比较紧张,考虑并不是特别全,并没有写出一个比较合适的方法(无法普及调用).今天回过头想了一下,做了一些改进,望大家多给与指点.思路上采用闭包和数组的find方法. var getItem=function () { var cacheArr=[]; //判断数组是否支持find方法,如果不支持则扩充 if (!Array.p

[python]缓存函数结果进redis

工作中遇到一个问题,就是有一些需要对数据库做全表扫描,而且对结果要求比较宽松的地方,总觉得可以找地方优化,比如暂时保存计算结果. 首先想起来的就是functools.lru_cache,但是可惜在python2.7中没有这个装饰器. 然后就是在stackoverflow找了一个: (来源:https://stackoverflow.com/questions/11815873/memoization-library-for-python-2-7) 1 import time 2 import f

memcache缓存函数方法详解

1.Memcache::add用法  代码:bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] ) 说明: 如果$key不存在的时候,使用这个函数来存储$var的值.功能相同的函数是memcache_add(). 参数: $key :将要存储的键值. $var :存储的值,字符型和整型会按原值保存,其他类型自动序列化以后保存. $flag:是否用MEMCACHE_COMPRESSED来压缩存储的

PHP简单实用的缓存函数

/** * @说明: 文件缓存输出 * @参数: $cachefile => cache文件(绝对路径) * @参数: $pertime => 缓存输出的间隔时间 * @参数: $sql => sql语句 * @参数: $templatefile => 模板文件名称(绝对路径) **/ function __cache($cachefile,$pertime,$sql,$templatefile) { global $db; if(time() - @filemtime($cach

JavaScript 缓存函数测试

! function () { var /* */_a = function (x) { ; x.forEach( function (v) { return v*v }) } , _b = function (x) { var _each = function (v) { return v*v } ; x.forEach( _each ) } , _c = ( function () { var _each = function (v) { return v*v } ; return func

微擎数据库缓存的增、删、改和查函数详解

函数所在文件:framework/function/cache.mysql.func.php 目前微擎的个人真实调用: $setting = $this->module['config']; $aaaaa = $setting['copyright']; 在微擎微信公众号系统里面可以分为三类缓存:保存到数据库表core_cache中的数据库缓存.保存到文件的文件缓存和memcahe缓存,本教程介绍的是数据库缓存,也是微擎系统配置的默认缓存. 因为,处理数据库缓存的函数相对简单,所以,phpos微

如何编写高质量的 JS 函数(4) --函数式编程[实战篇]

本文首发于 vivo互联网技术 微信公众号? 链接:https://mp.weixin.qq.com/s/ZoXYbjuezOWgNyJKmSQmTw 作者:杨昆 ?[编写高质量函数系列],往期精彩内容: <如何编写高质量的 JS 函数(1) -- 敲山震虎篇>介绍了函数的执行机制,此篇将会从函数的命名.注释和鲁棒性方面,阐述如何通过 JavaScript 编写高质量的函数. ?<如何编写高质量的 JS 函数(2)-- 命名/注释/鲁棒篇>从函数的命名.注释和鲁棒性方面,阐述如何通

lodash用法系列(3),使用函数

Lodash用来操作对象和集合,比Underscore拥有更多的功能和更好的性能. 官网:https://lodash.com/引用:<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>安装:npm install lodash 首先通过npm安装lodash:npm i --save lodash 在js文件中引用lodash:var _ =

javascript函数库

//构造缓存函数 var memoizer = function (memo, fundamental) { var shell = function (n) { var result = memo[n]; if (typeof result !== 'number') { result = fundamental(shell, n); memo[n] = result; } return result; }; return shell; };