[发明专利]基于持久存储既有计算结果来加速程序计算的方法及系统有效
申请号: | 201210496533.4 | 申请日: | 2012-11-28 |
公开(公告)号: | CN103019705A | 公开(公告)日: | 2013-04-03 |
发明(设计)人: | 李旭东 | 申请(专利权)人: | 南开大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 天津佳盟知识产权代理有限公司 12002 | 代理人: | 侯力 |
地址: | 300071*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 持久 存储 既有 计算 结果 加速 程序 方法 系统 | ||
技术领域
本发明属于计算机领域,主要关注提高程序计算的执行效率。
背景技术
目前提高程序计算的执行效率主要有两类手段,一类是提高计算机硬件CPU的处理能力;另外一类是提高程序本身的并发执行度。本发明则从单个程序单次运行中多次调用同一个函数及相同参数值、多个程序单次运行中多次调用同一个函数及相同参数值、程序的多次执行中多次调用同一个函数及相同参数值,因此有效减少重复计算次数将会有效地提高程序计算的执行效率。
发明内容
本发明目的是为了提高程序计算的执行效率,提供一种基于持久存储既有计算结果来加速程序计算的方法及系统。
基于持久存储既有计算结果来加速程序计算的方法包括:设定所要监控的函数;动态监控受监控函数的执行实例;若受监控函数实例未运行过,则直接执行受监控函数代码,并将受监控函数执行实例的执行结果存储在持久存储设备中;若受监控函数实例已运行过,则直接从持久存储设备中将受监控函数执行实例的执行结果取出来,作为本次受控函数执行实例的结果。
基于持久存储既有计算结果来加速程序计算的方法,包括具体步骤如下:
第1、设定所要监控的函数;
第2、获取受监控函数集合到内存;
第3、加载待运行程序到内存;
第4、扫描待运行程序并针对受监控函数增加监控钩子函数代码;
第5、执行程序,直到执行到调用受监控函数点和程序结束点中的任意一个条件;
第6、若运程程序运行到程序结束点,则执行步骤14;
第7、若运行程序执行到调用受监控函数点处,则调用监控钩子函数代码,即执行步骤8;
第8、监控钩子函数代码从持久存储设备读取并检索是否存在受监控函数及参数的历史执行结果,若存在受监控函数及参数的历史执行结果,则执行步骤9;否则执行步骤11;
第9、监控钩子函数代码获取受监控函数及参数的历史执行结果,并赋给当前受监控函数的调用者;
第10、跳过对受监控函数实例的执行,进一步执行步骤13;
第11、因为不存在受监控函数及参数的历史执行结果,因此直接执行受监控函数实例,获取执行结果,并赋给当前受监控函数的调用者;
第12、将当前受监控函数执行实例的参数及执行结果存储在持久存储设备中;
第13、继续执行程序,执行步骤5;
第14、程序执行结束。
其中,第1步骤所述的“设定所要监控的函数”,是在操作系统运行下,任意时间可以动态设定所要监控的函数,包括增加新的监控函数、删除已有的监控函数。所有受监控的函数统称为“受监控函数集合”。每一个受监控函数的基本信息包括函数唯一索引号、函数名、参数个数、{参数名、参数类型}序列表、函数执行结果的有效时间,其中函数的返回值属于函数参数。
第4步骤所述的“扫描待运行程序,针对受监控函数增加监控钩子函数代码”中,扫描待运行程序既可以是扫描待运行程序的源程序,也可以是扫描待运行程序的二进制程序代码,二进制程序代码也包括由Java、C#等源代码生成的中间代码。
扫描待运行程序的源程序并增加监控钩子函数代码的方法为:首先增加一个与受监控函数对应的监控钩子函数代码,监控钩子函数与受监控函数的函数声明相同,监控钩子函数的实现代码流程为本发明方法中的第7至13步骤;最后将待运行程序源代码中所有调用受监控函数的语句改为调用监控钩子函数语句,其中监控钩子函数中调用受监控函数的语句除外。
扫描待运行程序的二进制程序代码并增加监控钩子函数代码的方法有两种。第1种方法为:首先创建与受监控函数的函数声明相同的监控钩子函数,并动态加载到运行程序的内存空间中,监控钩子函数的实现代码流程为本发明方法中的第7至13步骤;最后将将运行程序中所有调用受监控函数的调用指令作修改,用监控钩子函数的函数地址替换受监控函数的函数地址,其中监控钩子函数中调用受监控函数的语句除外。第2种方法为:首先创建与受监控函数的函数声明相同的监控钩子函数,并动态加载到运行程序的内存空间中,监控钩子函数的实现代码流程为本发明方法中的第7至13步骤;运行程序执行过程中,扫描指令序列,当发现将要调用受监控函数的指令时,直接改为调用受监控函数的监控钩子函数,其中监控钩子函数中调用受监控函数的语句除外。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南开大学,未经南开大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210496533.4/2.html,转载请声明来源钻瓜专利网。