当前位置:网站首页>浅聊缓存函数
浅聊缓存函数
2022-08-03 09:06:00 【InfoQ】

const calculate = (num)=>{
const startTime = new Date()
for(let i=0;i<num;i++){} // 大数计算
const endTime = new Date()
return endTime - startTime
}
console.log(calculate(10_000_000_000))
// 10465
calculate(10_000_000_000)let result = calculate(10_000_000_000)resultresultlet result = calculate(10_000_000_000)
let result1 = calculate(10_000_000_0000)
......
let resultN = calculate(10_000_000_0000...000)
calculatelet cacheObj = {}
const calculate = (num)=>{
if(!cacheObj[num]){
const startTime = new Date()
for(let i=0;i<num;i++){}
const endTime = new Date()
cacheObj[num] = endTime - startTime
}
return cacheObj[num]
}
calculatebalculatedalculate/*
* 缓存函数 cashed
*/
function cached(fn){ // 传入需要缓存结果的函数
const cacheObj = Object.create(null); // 创建一个对象
return function cachedFn (str) { // 返回回调函数
if ( !cacheObj [str] ) { // 在对象里面查询,函数结果是否被计算过
let result = fn(str);
cacheObj [str] = result; // 没有则要执行原函数,并把计算结果缓存起来
}
return cacheObj [str] // 被缓存过,直接返回
}
}
// calculate 计算大数的函数(也可以叫原函数)
const calculate = (num)=>{
const startTime = new Date()
for(let i=0;i<num;i++){}
const endTime = new Date()
return endTime - startTime
}
// 经过缓存函数 cashed 将原函数 calculate 封装,让原函数具有缓存的新功能
let cashedCalculate = cached(calculate)
cashedCalculate(10_000_000_000) // 10465
cashedCalculatecashedCalculate(10_000_000_000) // 10465
边栏推荐
- 删除文件夹时,报错“错误ox80070091:目录不是空的”,该如何解决?
- Batch PNG format can be converted to JPG format
- 【LeetCode】zj面试-把字符串转换成整数
- 【收获合辑】k-NN与检索任务的异同+jupyter转pdf
- QImage的指针问题
- dflow入门1——HelloWorld!
- 兔起鹘落全端涵盖,Go lang1.18入门精炼教程,由白丁入鸿儒,全平台(Sublime 4)Go lang开发环境搭建EP00
- Industry SaaS Microservice Stability Guarantee Actual Combat
- 并发之ReentrantLock
- 手把手教你如何自制目标检测框架(从理论到实现)
猜你喜欢

机器学习(公式推导与代码实现)--sklearn机器学习库

Chrome F12 keep before request information network

Cartesi 2022 年 7 月回顾

pytorch one-hot tips

MySQL-TCL语言-transaction control language事务控制语言

Index (3)

10 Convolutional Neural Networks for Deep Learning 2

批量将PNG格式转化为JPG格式

Network LSTM both short-term and long-term memory

MySQL-存储过程-函数-
随机推荐
长短期记忆网络 LSTM
好用的插件
dflow入门1——HelloWorld!
【无标题】
文章列表的显示 以及创建文章 还有文章详情的基本
Guava-字符串工具
LeetCode 每日一题——622. 设计循环队列
机器学习(公式推导与代码实现)--sklearn机器学习库
AcWing 3391. 今年的第几天?(简单题)
uni-app 顶部选项卡吸附效果 demo(整理)
Flink Yarn Per Job - Submit application
命令行加载特效 【cli-spinner.js】 实用教程
Partition table (1)
Industry SaaS Microservice Stability Guarantee Actual Combat
多媒体数据处理实验4:LSH索引
【LeetCode】zj面试-把字符串转换成整数
Add Modulo 10 (规律循环节,代码实现细节)
Scala parallel collections, parallel concurrency, thread safety issues, ThreadLocal
HCIP练习02(OSPF)
WPF 学习笔记《WPF样式基础》