本發明專利技術公開了基于持久存儲既有計算結果來加速程序計算的方法及系統,屬于計算機領域。基于持久存儲既有計算結果來加速程序計算的方法包括:設定所要監控的函數;監控受監控函數實例的執行;若受監控函數實例未運行過,則直接執行受監控函數代碼,并將受監控函數執行實例的參數及執行結果存儲在持久存儲設備中;否則直接從持久存儲設備中將受監控函數執行實例的執行結果取出來,作為本次受控函數執行實例的結果。基于持久存儲既有計算結果來加速計算的系統包括:程序計算執行裝置和程序計算結果的持久存儲裝置。本發明專利技術能夠有效地加速程序運行效率,尤其是適合存在大量重復且費時函數的程序。
【技術實現步驟摘要】
基于持久存儲既有計算結果來加速程序計算的方法及系統
本專利技術屬于計算機領域,主要關注提高程序計算的執行效率。
技術介紹
目前提高程序計算的執行效率主要有兩類手段,一類是提高計算機硬件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種方法為首先創建與受監控函數的函數聲明...
【專利技術屬性】
技術研發人員:李旭東,
申請(專利權)人:南開大學,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。