当前位置: 首页 > 专利查询>北京大学专利>正文

用于函数执行的缓存方法和装置制造方法及图纸

技术编号:6993915 阅读:168 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种用于函数执行的缓存方法和装置,其中,方法包括以下步骤:将参数列表传入被调用函数,并根据被调用函数的函数名和参数列表得到函数实例特征码;根据函数实例特征码在缓存模块中查询函数执行结果;若未检索到函数执行结果,执行被调用函数;以函数实例特征码为键值将被调用函数的执行结果存入缓存模块,并返回被调用函数的执行结果。

【技术实现步骤摘要】

本专利技术涉及计算机信息处理、软件开发和程序设计领域,具体而言,涉及一种用于 函数执行的缓存方法和装置。
技术介绍
在软件开发过程中,函数是程序的最小单元,大的软件系统都是由许多函数依据 一定的业务逻辑组合而成,函数的执行速度决定了整个软件系统的运行效率。通常情况下, 函数被调用时依据程序逻辑从函数开头执行整个函数体,从而得到整个函数的计算结果, 这在数据变化快的场合是完全必要的。但是在一些应用场合,如企业业务系统中的系统数据像组织机构、人员及权限数 据等,这些数据通常保存在关系数据库系统中,一般情况下这些数据很长时间不会改变。只 要数据不改变,多次查询相关信息得到的结果往往是相同的,一些操作比较消耗计算机资 源,重复相同的操作对性能影响很大,使用系统的人越多,应用系统运行越慢。在软件设计 中缓存技术广泛采用,但是目前的缓存技术适用于粗粒度数据的缓存,如上述组织机构信 息,通常都是在系统启动时将所有数据一次性读入缓存;但是对于一些细粒度数据像权限 数据,每个用户、每个角色、针对不同的操作对象,权限都不一样,一些权限需要进行复杂的 运算才能得到,类似这样的数据难以做到一次性将所有数据加载到缓存中。另外,目前的缓 存都是在函数调用端将函数执行结果进行缓存,为了增加缓存功能,需要对调用端代码进 行修改。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题目前的缓存技 术不支持细粒度函数执行结果的缓存,也不支持函数自管理缓存功能,如果函数调用方和 函数提供方是不同的组织,调用方往往不清楚函数提供方的业务逻辑,不能确认被调用函 数的执行结果能否被缓存及缓存的刷新时间,调用方往往不会采取缓存策略,因此影响了 其使用效果。
技术实现思路
本专利技术旨在提供一种用于函数执行的缓存方法和装置,能够解决现有技术中使用 的缓存技术不支持细粒度函数执行结果的缓存及不支持函数自管理缓存功能,如果函数调 用方和函数提供方是不同的组织,调用方往往不清楚函数提供方的业务逻辑,不能确认被 调用函数的执行结果能否被缓存及缓存的刷新时间,进而调用方往往不会采取缓存策略, 因此影响了其使用效果的问题。在本专利技术的实施例中,提供了一种用于函数执行的缓存方法,包括以下步骤将参数列表传入被调用函数,并根据被调用函数的函数名和参数列表得到函数实 例特征码;根据函数实例特征码在缓存模块中查询函数执行结果;若未检索到函数执行结果,执行被调用函数;以函数实例特征码为键值将被调用函数的执行结果存入缓存模块,并返回被调用 函数的执行结果。在本专利技术的实施例中还提供了一种用于函数执行的缓存装置,包括调用模块,用于向被调用函数发起调用请求,其中,被调用函数具有缓存功能且返 回值为有效数据类型;特征码生成模块,用于将参数列表传入被调用函数,并根据被调用函数的函数名 和参数列表得到函数实例特征码;缓存模块,用于缓存被调用函数的执行结果;执行模块,用于根据函数实例特征码在缓存模块中查询函数执行结果,若未检索 到函数执行结果,执行被调用函数,以函数实例特征码为键值将被调用函数的执行结果存 入缓存模块,并返回被调用函数的执行结果。在上述实施例中,通过在函数优化过程中,根据函数实例特征码在缓存模块中查 询函数执行结果,若未检索到函数执行结果,执行被调用函数,并以函数实例特征码为键值 将被调用函数的执行结果存入缓存模块,并返回被调用函数的执行结果,从而使调用方根 据函数的执行结果而不需要执行被调用函数,当缓存模块中没有查询到函数的执行结果时 才执行被调用函数,细化了函数执行结果的缓存粒度,使得被调用函数不必重复的执行,提 高了函数执行的效率,克服了现有技术中使用的缓存技术不支持细粒度执行结果的缓存及 函数自管理缓存功能,如果函数调用方和函数提供方是不同的组织,调用方往往不清楚函 数提供方的业务逻辑,不能确认被调用函数的执行结果能否被缓存及缓存的刷新时间,进 而调用方往往不会采取缓存策略,因此影响了其使用效果的问题。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本发 明的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中图1示出了根据本专利技术的一个实施例的用于函数执行的缓存方法流程图;图2示出了根据本专利技术的一个优选实施例的用于函数执行的缓存方法流程图;图3示出了根据本专利技术的一个实施例的用于函数执行的缓存装置示意图。具体实施例方式下面将参考附图并结合实施例,来详细说明本专利技术。图1示出了根据本专利技术的一个实施例的用于函数执行的缓存方法流程图,包括以 下步骤S102,将参数列表传入被调用函数,并根据被调用函数的函数名和参数列表得到 函数实例特征码;S104,根据函数实例特征码在缓存模块中查询函数执行结果;S106,若未检索到函数执行结果,执行被调用函数;S108,以函数实例特征码为键值将被调用函数的执行结果存入缓存模块,并返回 被调用函数的执行结果。在本实施例中,通过在函数优化过程中,根据函数实例特征码在缓存模块中查询函数执行结果,若未检索到函数执行结果,执行被调用函数,并以函数实例特征码为键值将 被调用函数的执行结果存入缓存模块,并返回被调用函数的执行结果,从而使调用方根据 函数的执行结果而不需要执行被调用函数,当缓存模块中没有查询到函数的执行结果时才 执行被调用函数,细化了函数执行结果的缓存粒度,使得被调用函数不必重复的执行,提高 了函数执行的效率,克服了现有技术中使用的缓存技术不支持细粒度执行结果的缓存及函 数自管理缓存功能,如果函数调用方和函数提供方是不同的组织,调用方往往不清楚函数 提供方的业务逻辑,不能确认被调用函数的执行结果能否被缓存及缓存的刷新时间,进而 调用方往往不会采取缓存策略,因此影响了其使用效果的问题。优选地,在上述用于函数执行的缓存方法中,将参数列表传入被调用函数,并根据 被调用函数的函数名和参数列表得到函数实例特征码具体包括将参数列表传入被调用函 数;将被调用函数的函数名及参数列表组合为函数实例字符串,并将函数实例字符串按照 设定的散列算法转换为散列码作为函数实例特征码。优选地,在上述用于函数执行的缓存方法中,还包括以下步骤若检索到函数执行 结果,获取缓存的函数执行结果并返回。优选地,在上述用于函数执行的缓存方法中,被调用函数为面向过程开发语言的 函数或面向对象开发语言的对象成员函数。优选地,在上述用于函数执行的缓存方法中,参数列表包括以下至少一种基本数 据类型、数组、结构或面向对象开发语言中的对象类型。优选地,在上述用于函数执行的缓存方法中,当以函数实例特征码为键值将被调 用函数的执行结果存入缓存模块时,还包括以下步骤在缓存模块中保存被调用函数的执 行时间的时间戳。优选地,在上述用于函数执行的缓存方法中,还包括以下步骤根据时间戳判断保 存在缓存中的调用函数的执行结果是否超时;如果超时,重新执行被调用函数。图2示出了根据本专利技术的一个优选实施例的用于函数执行的缓存方法流程图。如 图2所示,当被调用函数为不带参数的函数的缓存机制时,调用函数的执行过程如下所示函数调用装置调用函数名为“function”的函数,由于函数没有参数,因此函数描 述为 “function ()”。第一次调用过程如下S201,由于被调用函本文档来自技高网
...

【技术保护点】
一种用于函数执行的缓存方法,其特征在于,包括以下步骤:将参数列表传入被调用函数,并根据所述被调用函数的函数名和所述参数列表得到函数实例特征码;根据所述函数实例特征码在缓存模块中查询函数执行结果;若未检索到所述函数执行结果,执行所述被调用函数;以所述函数实例特征码为键值将所述被调用函数的执行结果存入所述缓存模块,并返回所述被调用函数的执行结果。

【技术特征摘要】

【专利技术属性】
技术研发人员:乐以长傅连舟陆振华
申请(专利权)人:北京大学北大方正集团有限公司北京方正奥德计算机系统有限公司
类型:发明
国别省市:11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1