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

基于持久存储既有计算结果来加速程序计算的方法及系统技术方案

技术编号:8532536 阅读:159 留言:0更新日期:2013-04-04 15:22
本发明专利技术公开了基于持久存储既有计算结果来加速程序计算的方法及系统,属于计算机领域。基于持久存储既有计算结果来加速程序计算的方法包括:设定所要监控的函数;监控受监控函数实例的执行;若受监控函数实例未运行过,则直接执行受监控函数代码,并将受监控函数执行实例的参数及执行结果存储在持久存储设备中;否则直接从持久存储设备中将受监控函数执行实例的执行结果取出来,作为本次受控函数执行实例的结果。基于持久存储既有计算结果来加速计算的系统包括:程序计算执行装置和程序计算结果的持久存储装置。本发明专利技术能够有效地加速程序运行效率,尤其是适合存在大量重复且费时函数的程序。

【技术实现步骤摘要】
基于持久存储既有计算结果来加速程序计算的方法及系统
本专利技术属于计算机领域,主要关注提高程序计算的执行效率。
技术介绍
目前提高程序计算的执行效率主要有两类手段,一类是提高计算机硬件CPU的处 理能力;另外一类是提高程序本身的并发执行度。本专利技术则从单个程序单次运行中多次调 用同一个函数及相同参数值、多个程序单次运行中多次调用同一个函数及相同参数值、程 序的多次执行中多次调用同一个函数及相同参数值,因此有效减少重复计算次数将会有效 地提闻程序计算的执行效率。
技术实现思路
本专利技术目的是为了提高程序计算的执行效率,提供一种基于持久存储既有计算结 果来加速程序计算的方法及系统。基于持久存储既有计算结果来加速程序计算的方法包括设定所要监控的函数; 动态监控受监控函数的执行实例;若受监控函数实例未运行过,则直接执行受监控函数代 码,并将受监控函数执行实例的执行结果存储在持久存储设备中;若受监控函数实例已运 行过,则直接从持久存储设备中将受监控函数执行实例的执行结果取出来,作为本次受控 函数执行实例的结果。基于持久存储既有计算结果来加速程序计算的方法,包括具体步骤如下第1、设定所要监控的函数;第2、获取受监控函数集合到内存;第3、加载待运行程序到内存;第4、扫描待运行程序并针对受监控函数增加监控钩子函数代码;第5、执行程序,直到执行到调用受监控函数点和程序结束点中的任意一个条件;第6、若运程程序运行到程序结束点,则执行步骤14 ;第7、若运行程序执行到调用受监控函数点处,则调用监控钩子函数代码,即执行 步骤8 ;第8、监控钩子函数代码从持久存储设备读取并检索是否存在受监控函数及参数 的历史执行结果,若存在受监控函数及参数的历史执行结果,则执行步骤9 ;否则执行步骤 11 ;第9、监控钩子函数代码获取受监控函数及参数的历史执行结果,并赋给当前受监 控函数的调用者;第10、跳过对受监控函数实例的执行,进一步执行步骤13 ;第11、因为不存在受监控函数及参数的历史执行结果,因此直接执行受监控函数 实例,获取执行结果,并赋给当前受监控函数的调用者;第12、将当前受监控函数执行实例的参数及执行结果存储在持久存储设备中;第13、继续执行程序,执行步骤5 ;第14、程序执行结束。其中,第I步骤所述的“设定所要监控的函数”,是在操作系统运行下,任意时间可以动态设定所要监控的函数,包括增加新的监控函数、删除已有的监控函数。所有受监控的函数统称为“受监控函数集合”。每一个受监控函数的基本信息包括函数唯一索引号、函数名、参数个数、{参数名、参数类型}序列表、函数执行结果的有效时间,其中函数的返回值属于函数参数。第4步骤所述的“扫描待运行程序,针对受监控函数增加监控钩子函数代码”中,扫描待运行程序既可以是扫描待运行程序的源程序,也可以是扫描待运行程序的二进制程序代码,二进制程序代码也包括由Java、C#等源代码生成的中间代码。扫描待运行程序的源程序并增加监控钩子函数代码的方法为首先增加一个与受监控函数对应的监控钩子函数代码,监控钩子函数与受监控函数的函数声明相同,监控钩子函数的实现代码流程为本专利技术方法中的第7至13步骤;最后将待运行程序源代码中所有调用受监控函数的语句改为调用监控钩子函数语句,其中监控钩子函数中调用受监控函数的语句除外。扫描待运行程序的二进制程序代码并增加监控钩子函数代码的方法有两种。第I种方法为首先创建与受监控函数的函数声明相同的监控钩子函数,并动态加载到运行程序的内存空间中,监控钩子函数的实现代码流程为本专利技术方法中的第7至13步骤;最后将将运行程序中所有调用受监控函数的调用指令作修改,用监控钩子函数的函数地址替换受监控函数的函数地址,其中监控钩子函数中调用受监控函数的语句除外。第2种方法为首先创建与受监控函数的函数声明相同的监控钩子函数,并动态加载到运行程序的内存空间中,监控钩子函数的实现代码流程为本专利技术方法中的第7至13步骤;运行程序执行过程中,扫描指令序列,当发现将要调用受监控函数的指令时,直接改为调用受监控函数的监控钩子函数,其中监控钩子函数中调用受监控函数的语句除外。受监控函数的监控钩子代码首先在持久存储设备上检索受监控函数及参数的历史执行结果是否存在,若存在直接从持久存储设备上获取受监控函数及参数的历史执行结果,然后跳过对受监控函数的调用;否则需执行受监控函数,并将受监控函数的执行结果存储在持久存储设备上。最后受监控函数的监控钩子函数将执行权交给运行程序的下一指令代码。第8、9、12步骤中所涉及的持久存储设备指在掉电情况下已保存的数据不会丢失的存储设备,包括磁盘、磁带存储设备,也包括具有持久存储能力的数据库。第12步骤中将当前受监控函数执行实例的参数及执行结果存储在持久存储设备中。受监控函数执行实例的参数及执行结果的存储基本信息包括函数唯一索引号、函数名、参数个数、(参数名,参数值)序列表、函数执行时间。为了快速检索,在函数唯一索引号、函数名、参数名关键字段建立索弓I。本专利技术同时提供一种基于持久存储既有计算结果来加速程序计算的系统,所述系统包括程序计算装置和受监控函数计算结果的持久存储装置。程序计算装置包括管理持久存储设备中受监控函数及参数的历史执行结果模块、检索受监控函数及参数的历史执行结果模块、设定所要监控的函数集合模块、获取受监控函数集合到内存模块、加载待运行程序到内存模块、扫描待运行程序,对受监控函数增加监控钩子模块、程序执行模块;持久存储装置包括受监控函数及参数的历史执行结果管理模块、检索受监控函数及参数的历史执行结果模块、受监控函数信息管理模块、持久存储介质。检索受监控函数及参数的历史执行结果模块既可以在程序计算装置中完成,也可以在受监控函数计算结果的持久存储装置中完成,也可以在程序计算装置和受监控函数计算结果的持久存储装置中协作完成。本专利技术所涉及的具体内容及所述术语的含义是(I)受监控的函数指那些运行耗时较多且频繁运行的函数,在程序计算装置的操作系统上任何时间可以设定对这些函数运行的监控。所有受监控的函数统称为“受监控函数集合”。(2)基于持久存储既有计算结果来加速程序计算的系统,包括程序计算装置和受监控函数计算结果的持久存储装置。程序计算装置和受监控函数计算结果的持久存储装置之间可采用数据电缆直连(包括USB接口)、有线网网络连接、无线网络连接多种连接方式。程序计算装置功能主要是对受监控函数的设定、管理持久存储设备中受监控函数及参数的历史执行结果、检索受监控函数及参数的历史执行结果、获取受监控函数集合、力口载待运行程序、扫描待运行程序并对受监控函数增加监控钩子、进行待运行程序的执行等功能。其中对受监控函数的设定功能包括增加、删除、修改受监控函数;管理持久存储设备中受监控函数及参数的历史执行结果的功能包括增加、删除持久存储设备中受监控函数及参数的历史执行结果。程序计算装置既可以是通用的计算机,也可以是嵌入式系统。受监控函数计算结果的持久存储装置功能主要是受监控函数信息管理、受监控函数及参数的历史执行结果管理、检索受监控函数及参数的历史执行结果功能。所有持久信息需要最终保存到受监控函数计算结果的持久存储装置的持久存储介质中。其中受监控函数信息管理的功能包括增加、删除、修改受监控函数;受监本文档来自技高网...

【技术保护点】
基于持久存储既有计算结果来加速程序计算的方法,其特征在于,所述方法包括具体步骤如下:第1、设定所要监控的函数;第2、获取受监控函数集合到内存;第3、加载待运行程序到内存;第4、扫描待运行程序并针对受监控函数增加监控钩子函数代码;第5、执行程序,直到执行到调用受监控函数点和程序结束点中的任意一个条件;第6、若运程程序运行到程序结束点,则执行步骤14;第7、若运行程序执行到调用受监控函数点处,则调用监控钩子函数代码,即执行步骤8;第8、监控钩子函数代码从持久存储设备读取并检索是否存在受监控函数及参数的历史执行结果,若存在受监控函数及参数的历史执行结果,则执行步骤9;否则执行步骤11;第9、监控钩子函数代码获取受监控函数及参数的历史执行结果,并赋给当前受监控函数的调用者;第10、跳过对受监控函数实例的执行,进一步执行步骤13;第11、因为不存在受监控函数及参数的历史执行结果,因此直接执行受监控函数实例,获取执行结果,并赋给当前受监控函数的调用者;第12、将当前受监控函数执行实例的参数及执行结果存储在持久存储设备中;第13、继续执行程序,执行步骤5;第14、程序执行结束。

【技术特征摘要】
1.基于持久存储既有计算结果来加速程序计算的方法,其特征在于,所述方法包括具体步骤如下 第1、设定所要监控的函数; 第2、获取受监控函数集合到内存; 第3、加载待运行程序到内存; 第4、扫描待运行程序并针对受监控函数增加监控钩子函数代码; 第5、执行程序,直到执行到调用受监控函数点和程序结束点中的任意一个条件; 第6、若运程程序运行到程序结束点,则执行步骤14 ; 第7、若运行程序执行到调用受监控函数点处,则调用监控钩子函数代码,即执行步骤8 ; 第8、监控钩子函数代码从持久存储设备读取并检索是否存在受监控函数及参数的历史执行结果,若存在受监控函数及参数的历史执行结果,则执行步骤9 ;否则执行步骤11 ;第9、监控钩子函数代码获取受监控函数及参数的历史执行结果,并赋给当前受监控函数的调用者; 第10、跳过对受监控函数实例的执行,进一步执行步骤13 ; 第11、因为不存在受监控函数及参数的历史执行结果,因此直接执行受监控函数实例,获取执行结果,并赋给当前受监控函数的调用者; 第12、将当前受监控函数执行实例的参数及执行结果存储在持久存储设备中; 第13、继续执行程序,执行步骤5 ; 第14、程序执行结束。2.根据权利要求1所述的方法,其特征在于,第I步所述的设定所要监控的函数,是在操作系统运行下,任意时间动态设定所要监控的函数,包括增加新的监控函数、删除已有的监控函数,所有受监控的函数统称为“受监控函数集合”;每一个受监控函数的基本信息包括函数唯一索引号、函数名、参数个数、{参数名、参数类型}序列表、函数执行结果的有效时间,其中函数的返回值属于函数参数。3.根据权利要求1所述的方法,其特征在于第4步所述的扫描待运行程序,是扫描待运行程序的源程序,或者扫描待运行程序的二进制程序代码,二进制程序代码也包括由Java、C#源代码生成的中间代码。4.根据权利要求3所述的方法,其特征在于第4步所述的,扫描待运行程序的源程序并增加监控钩子函数代码的方法为首先增加一个与受监控函数对应的监控钩子函数代码,监控钩子函数与受监控函数的函数声明相同,监控钩子函数的实现代码流程为本发明方法中的第7至13步骤;最后将待运行程序源代码中所有调用受监控函数的语句改为调用监控钩子函数语句,其中监控钩子函数中调用受监控函数的语句除外。5.根据权利要求3所述的方法,其特征在于,扫描待运行程序的二进制程序代码并增加监控钩子函数代码的方法有两种,第I种方法为首先创建与受监控函数的函数声明...

【专利技术属性】
技术研发人员:李旭东
申请(专利权)人:南开大学
类型:发明
国别省市:

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

1