專利名稱:提高應用程序運行速度的方法、裝置及終端的制作方法
技術領域:
本發明涉及計算機領域,特別涉及一種提高應用程序運行速度的方法、裝置及終端。
背景技術:
隨著計算機技術的高速發展,應用程序的種類越來越多。為了滿足用戶對各類應用程序的運行需求,提高應用程序的運行速度,成為了眾多研究者十分關注的課題。現有技術在提高應用程序的運行速度時,采取了預讀和預加載(Prefetch)兩種機制。其中,預讀機制是指在讀取本地數據文件時,除了讀取當前所需數據外,還將當前所 需數據后的內容也一并讀入內存中,以在用到該部分內容時,可從內存中直接讀取,從而減少應用程序在IO(Input/Output,輸入輸出)上的耗時;預加載機制是指在開機加載操作系統時,讀取常用的應用程序的主要內容,以備在該類應用程序啟動時耗費大量時間來讀取數據。在實現本發明的過程中,發明人發現現有技術至少存在以下問題預讀機制僅適用于在加載應用程序時順序訪問本地數據的場景,針對應用程序運行時對本地數據進行隨機訪問的場景,該預讀機制的作用并不顯著;預加載機制針對所有應用程序運行速度進行優化,具有一定普遍性但缺乏針對性,對應用程序運行速度的優化空間有限。
發明內容
為了在提高應用程序運行速度的同時,提高速度優化的針對性,并增強速度提高的效果,本發明實施例提供了一種提高應用程序運行速度的方法、裝置及終端。所述技術方案如下—方面,提供了一種提高應用程序運行速度的方法,所述方法包括采集應用程序運行時缺頁中斷對應的本地數據信息,所述本地數據信息包括本地數據所在文件的文件名、所述本地數據在所述文件內的偏移以及所述本地數據的大小;根據采集到的所述本地數據信息獲取對應的本地數據,并在獲取到提高所述應用程序運行速度的指令后,加載獲取到的所述本地數據。其中,所述采集應用程序運行時缺頁中斷對應的本地數據信息,具體包括通過事件跟蹤機制采集應用程序運行時的硬缺頁事件和軟缺頁事件,從記錄了所述硬缺頁事件和軟缺頁事件的事件跟蹤日志中獲取所述應用程序運行時缺頁中斷對應的本地數據信息;或者,通過鉤子HOOK技術對系統底層調用進行監控,并獲取用于記錄缺頁中斷對應的本地數據信息的監控代碼,根據所述監控代碼獲取所述應用程序運行時缺頁中斷對應的本地數據信息。優選地,所述根據采集到的所述本地數據信息獲取對應的本地數據,具體包括
解析采集到的所述本地數據信息,得到本地數據所在文件的文件名、所述本地數據在所述文件內的偏移以及所述本地數據的大小;按照所述本地數據所在文件的文件名將采集到的本地數據信息進行聚合;按照所述本地數據在所述文件內的偏移將聚合后的本地數據信息進行合并,并在合并后的本地數據信息中選取符合預取條件的本地數據信息作為預取數據信息;根據選取的所述預取數據信息獲取對應的本地數據。
進一步地,所述在合并后的本地數據信息中選取符合預取條件的本地數據信息作為預取數據信息之后,還包括根據所述應用程序的信息存儲選取的所述預取數據信息;所述加載獲取到的本地數據,具體包括根據所述應用程序的信息獲取所述預取數據信息,并根據所述預取數據信息獲取對應的本地數據,將獲取到的本地數據加載至內存。進一步地,所述加載獲取到的本地數據之前,還包括輸出應用程序列表,提示用戶在所述應用程序列表中選擇提高運行速度的應用程序;根據用戶在所述應用程序列表中選擇的應用程序接收提高所述應用程序運行速度的指令以及所述應用程序的信息。另一方面,還提供了一種提高應用程序運行速度的裝置,所述裝置包括采集模塊,用于采集應用程序運行時缺頁中斷對應的本地數據信息,所述本地數據信息包括本地數據所在文件的文件名、所述本地數據在所述文件內的偏移以及所述本地數據的大小;獲取模塊,用于根據所述采集模塊采集到的所述本地數據信息獲取對應的本地數據;加載模塊,用于獲取到提高所述應用程序運行速度的指令后,加載所述獲取模塊獲取到的所述本地數據。其中,所述采集模塊,具體用于通過事件跟蹤機制采集應用程序運行時的硬缺頁事件和軟缺頁事件,從記錄了所述硬缺頁事件和軟缺頁事件的事件跟蹤日志中獲取所述應用程序運行時缺頁中斷對應的本地數據信息;或者,所述采集模塊,具體用于通過鉤子HOOK技術對系統底層調用進行監控,并獲取用于記錄缺頁中斷對應的本地數據信息的監控代碼,根據所述監控代碼獲取所述應用程序運行時缺頁中斷對應的本地數據信息。優選地,所述獲取模塊,具體包括解析單元,用于解析所述采集模塊采集到的本地數據信息,得到本地數據所在文件的文件名、所述本地數據在所述文件內的偏移以及所述本地數據的大小;聚合單元,用于按照所述解析單元解析出的本地數據所在文件的文件名將采集到的本地數據信息進行聚合;合并單元,用于按照所述解析單元解析出的本地數據在所述文件內的偏移將所述聚合單元聚合后的本地數據信息進行合并;選取單元,用于在所述合并單元合并后的本地數據信息中選取符合預取條件的本地數據信息作為預取數據信息;獲取單元,用于根據所述選取單元選取的所述預取數據信息獲取對應的本地數據。進一步地,所述裝置還包括存儲模塊,用于根據所述應用程序的信息存儲所述選取單元選取的所述預取數據信息;所述加載模塊,具體包括第一獲取單元,用于根據所述應用程序的信息獲取所述預取數據信息;第二獲取單元,用于根據所述第一獲取單元獲取到的預取數據信息獲取對應的本地數據; 加載單元,用于將所述第二獲取單元獲取到的本地數據加載至內存。進一步地,所述裝置還包括輸出模塊,用于輸出應用程序列表,提示用戶在所述應用程序列表中選擇提高運行速度的應用程序;接收模塊,用于根據用戶在所述輸出模塊輸出的應用程序列表中選擇的應用程序接收提高所述應用程序運行速度的指令以及所述應用程序的信息。再一方面,還提供了一種終端,所述終端包括上述提高應用程序運行速度的裝置。本發明實施例提供的技術方案帶來的有益效果是通過采集應用程序運行時缺頁中斷對應的本地數據信息,并加載根據本地數據信息獲取到的本地數據,從而減少應用程序訪問IO操作的耗時,達到提高應用程序運行速度的目的;另外,由于缺頁中斷對應的本地數據信息不局限于本地數據的訪問場景,因而可增強速度提高的效果;且由于不同應用程序運行時缺頁中斷對應的本地數據信息不同,針對不同應用程序具有不同的速度優化程度,因而可提高速度優化的針對性,進而擴大速度優化的空間。
為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖I是本發明實施例一提供的提高應用程序運行速度的方法流程圖;圖2是本發明實施例二提供的提高應用程序運行速度的方法流程圖;圖3是本發明實施例三提供的提高應用程序運行速度的裝置的結構示意圖;圖4是本發明實施例三提供的獲取模塊的結構示意圖;圖5是本發明實施例三提供的另一種提高應用程序運行速度的裝置的結構示意圖;圖6是本發明實施例三提供的加載模塊的結構示意圖;圖7是本發明實施例三提供的又一種提高應用程序運行速度的裝置的結構示意圖。
具體實施例方式為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明實施方式作進一步地詳細描述。實施例一本實施例提供了一種提高應用程序運行速度的方法,參見圖1,本實施例提供的方法流程具體如下101 :采集應用程序運行時缺頁中斷對應的本地數據信息,該本地數據信息包括本地數據所在文件的文件名、本地數據在文件內的偏移以及本 地數據的大小;其中,本實施例不對采集應用程序運行時缺頁中斷對應的本地數據信息的具體方式進行限定,包括但不限于如下方式通過事件跟蹤機制采集應用程序運行時的硬缺頁事件和軟缺頁事件,從記錄了硬缺頁事件和軟缺頁事件的事件跟蹤日志中獲取應用程序運行時缺頁中斷對應的本地數據信息;或者,通過鉤子HOOK技術對系統底層調用進行監控,并獲取用于記錄缺頁中斷對應的本地數據信息的監控代碼,根據監控代碼獲取應用程序運行時缺頁中斷對應的本地數據信息。102 :根據采集到的本地數據信息獲取對應的本地數據,并在獲取到提高應用程序運行速度的指令后,加載獲取到的本地數據。優選地,根據采集到的本地數據信息獲取對應的本地數據,具體包括解析采集到的本地數據信息,得到本地數據所在文件的文件名、本地數據在文件內的偏移以及本地數據的大小;按照本地數據所在文件的文件名將采集到的本地數據信息進行聚合;按照本地數據在文件內的偏移將聚合后的本地數據信息進行合并,并在合并后的本地數據信息中選取符合預取條件的本地數據信息作為預取數據信息;根據選取的預取數據信息獲取對應的本地數據。進一步地,在合并后的本地數據信息中選取符合預取條件的本地數據信息作為預取數據信息之后,還包括根據應用程序的信息存儲選取的預取數據信息;加載獲取到的本地數據,具體包括根據應用程序的信息獲取預取數據信息,并根據預取數據信息獲取對應的本地數據,將獲取到的本地數據加載至內存。進一步地,加載獲取到的本地數據之前,還包括輸出應用程序列表,提示用戶在應用程序列表中選擇提高運行速度的應用程序;根據用戶在應用程序列表中選擇的應用程序接收提高應用程序運行速度的指令以及應用程序的信息。本實施例提供的方法,通過采集應用程序運行時缺頁中斷對應的本地數據信息,并加載根據本地數據信息獲取到的本地數據,從而減少應用程序訪問IO操作的耗時,達到提高應用程序運行速度的目的;另外,由于缺頁中斷對應的本地數據信息不局限于本地數據的訪問場景,因而可增強速度提高的效果;且由于不同應用程序運行時缺頁中斷對應的本地數據信息不同,針對不同應用程序具有不同的速度優化程度,因而可提高速度優化的針對性,進而擴大速度優化的空間。實施例二本實施例提供了一種提高應用程序運行速度的方法,該方法通過采集應用程序運行時缺頁中斷對應的本地數據信息,并在根據該本地數據信息訓練得到預取數據信息后,根據預取數據信息加載對應的本地數據,從而減少應用程序訪問IO操作的耗時,達到提高應用程序運行的目的。結合上述實施例一的內容,本實施例以本地數據為磁盤數據為例,對提高應用程序運行速度的方法進行舉例說明。參見圖2,本實施例提供的方法流程具體如下201 :采集應用程序運行時缺頁中斷對應的磁盤數據信息,該磁盤數據信息包括磁盤數據所在文件的文件名、磁盤數據在文件內的偏移以及磁盤數據的大小; 其中,缺頁中斷是指要訪問的頁不在內存,需要操作系統將其調入內存后再進行訪問。且缺頁中斷可分為硬缺頁和軟缺頁,硬缺頁事件是指發生缺頁中斷后,需要的數據不在緩存也不在分頁內存中,需要通過IO操作從磁盤上獲取磁盤數據。軟缺頁是指發生缺頁中斷后,需要的數據已經被載入內存,但又被置換到磁盤中,需要從磁盤交換文件中將這塊內存信息再載入內存中。由此可見,無論是硬缺頁還是軟缺頁,缺頁中斷都將影響應用程序運行的速度,因此,為了提高應用程序運行速度,本實施例采取了采集應用程序運行時缺頁中斷對應的磁盤數據信息,后續步驟再通過提前加載根據磁盤數據信息獲取到的磁盤數據的方式,避免發生缺頁中斷,進而提高應用程序運行速度。采集應用程序運行時缺頁中斷對應的磁盤數據信息時,包括但不限于如下方式通過事件跟蹤機制采集應用程序運行時的硬缺頁事件和軟缺頁事件,從記錄了硬缺頁事件和軟缺頁事件的事件跟蹤日志中獲取應用程序運行時缺頁中斷對應的磁盤數據信息;或者,通過HOOK技術對系統底層調用進行監控,并獲取用于記錄缺頁中斷對應的磁盤數據信息的監控代碼,根據監控代碼獲取應用程序運行時缺頁中斷對應的磁盤數據信
肩、O具體地,事件跟蹤機制可以米用ETW(Event Tracing for Windows, Windows事件跟蹤),ETW是由操作系統提供的一種通用的、與性能日志和警報相比系統開銷較低的事件追蹤手段,用以監控具有負載的系統的性能。ETW主要用于頻繁記錄事件、錯誤、警告或審核的服務器應用程序。ETW提供用戶模式的應用程序和內核模式的設備驅動程序所觸發的事件追蹤機制。此外,ETW還能夠動態地啟用或者禁用日志記錄,便于進行詳細的追蹤,而無需重新啟動操作系統或者應用程序,因此,可通過ETW采集應用程序運行時的硬缺頁事件和軟缺頁事件,并從記錄了硬缺頁事件和軟缺頁事件的事件跟蹤日志中獲取應用程序運行時缺頁中斷對應的磁盤數據信息。當然,除了采用上述兩種采集方式外,還可以選擇其他采集方式,本實施對此不做具體限定。無論采用哪種采集方式,在采集到應用程序運行時缺頁中斷對應的磁盤數據信息后,均可將其轉化成磁盤內容描述格式〈file, offset, length〉,其中,file為磁盤數據所在文件的文件名,offset為磁盤數據在文件內的偏移,length為磁盤數據的大小,可以byte(字節)為單位。202 :根據采集到的磁盤數據信息得到預取數據信息;該步驟為優選步驟,根據采集到的磁盤數據信息得到預取數據信息的方式,包括但不限于如下步驟解析采集到的磁盤數據信息,得到磁盤數據所在文件的文件名、磁盤數據在文件內的偏移以及磁盤數據的大小;按照磁盤數據所在文件的文件名將采集到的磁盤數據信息進行聚合;
按照磁盤數據在文件內的偏移將聚合后的磁盤數據信息進行合并,并在合并后的磁盤數據信息中選取符合預取條件的磁盤數據信息作為預取數據信息。其中,本實施例不對解析采集到的磁盤數據信息的方式進行限定,為了便于說明,本實施例以解析出的磁盤數據信息如下面表I所示為例,對該步驟中得到預取數據信息的方式進行舉例說明。表I
權利要求
1.一種提高應用程序運行速度的方法,其特征在于,所述方法包括 采集應用程序運行時缺頁中斷對應的本地數據信息,所述本地數據信息包括本地數據所在文件的文件名、所述本地數據在所述文件內的偏移以及所述本地數據的大小; 根據采集到的所述本地數據信息獲取對應的本地數據,并在獲取到提高所述應用程序運行速度的指令后,加載獲取到的所述本地數據。
2.根據權利要求I所述的方法,其特征在于,所述采集應用程序運行時缺頁中斷對應的本地數據信息,具體包括 通過事件跟蹤機制采集應用程序運行時的硬缺頁事件和軟缺頁事件,從記錄了所述硬缺頁事件和軟缺頁事件的事件跟蹤日志中獲取所述應用程序運行時缺頁中斷對應的本地數據信息; 或者,通過鉤子HOOK技術對系統底層調用進行監控,并獲取用于記錄缺頁中斷對應的本地數據信息的監控代碼,根據所述監控代碼獲取所述應用程序運行時缺頁中斷對應的本地數據信息。
3.根據權利要求I所述的方法,其特征在于,所述根據采集到的所述本地數據信息獲取對應的本地數據,具體包括 解析采集到的所述本地數據信息,得到本地數據所在文件的文件名、所述本地數據在所述文件內的偏移以及所述本地數據的大小; 按照所述本地數據所在文件的文件名將采集到的本地數據信息進行聚合; 按照所述本地數據在所述文件內的偏移將聚合后的本地數據信息進行合并,并在合并后的本地數據信息中選取符合預取條件的本地數據信息作為預取數據信息; 根據選取的所述預取數據信息獲取對應的本地數據。
4.根據權利要求3所述的方法,其特征在于,所述在合并后的本地數據信息中選取符合預取條件的本地數據信息作為預取數據信息之后,還包括 根據所述應用程序的信息存儲選取的所述預取數據信息; 所述加載獲取到的本地數據,具體包括 根據所述應用程序的信息獲取所述預取數據信息,并根據所述預取數據信息獲取對應的本地數據,將獲取到的本地數據加載至內存。
5.根據權利要求I至4中任一權利要求所述的方法,其特征在于,所述加載獲取到的本地數據之前,還包括 輸出應用程序列表,提示用戶在所述應用程序列表中選擇提高運行速度的應用程序;根據用戶在所述應用程序列表中選擇的應用程序接收提高所述應用程序運行速度的指令以及所述應用程序的信息。
6.一種提高應用程序運行速度的裝置,其特征在于,所述裝置包括 采集模塊,用于采集應用程序運行時缺頁中斷對應的本地數據信息,所述本地數據信息包括本地數據所在文件的文件名、所述本地數據在所述文件內的偏移以及所述本地數據的大小; 獲取模塊,用于根據所述采集模塊采集到的所述本地數據信息獲取對應的本地數據;加載模塊,用于獲取到提高所述應用程序運行速度的指令后,加載所述獲取模塊獲取到的所述本地數據。
7.根據權利要求6所述的裝置,其特征在于,所述采集模塊,具體用于通過事件跟蹤機制采集應用程序運行時的硬缺頁事件和軟缺頁事件,從記錄了所述硬缺頁事件和軟缺頁事件的事件跟蹤日志中獲取所述應用程序運行時缺頁中斷對應的本地數據信息; 或者,所述采集模塊,具體用于通過鉤子HOOK技術對系統底層調用進行監控,并獲取用于記錄缺頁中斷對應的本地數據信息的監控代碼,根據所述監控代碼獲取所述應用程序運行時缺頁中斷對應的本地數據信息。
8.根據權利要求7所述的裝置,其特征在于,所述獲取模塊,具體包括 解析單元,用于解析所述采集模塊采集到的本地數據信息,得到本地數據所在文件的文件名、所述本地數據在所述文件內的偏移以及所述本地數據的大小; 聚合單元,用于按照所述解析單元解析出的本地數據所在文件的文件名將采集到的本地數據信息進行聚合; 合并單元,用于按照所述解析單元解析出的本地數據在所述文件內的偏移將所述聚合單元聚合后的本地數據信息進行合并; 選取單元,用于在所述合并子單元合并后的本地數據信息中選取符合預取條件的本地數據信息作為預取數據信息; 獲取單元,用于根據所述選取單元選取的所述預取數據信息獲取對應的本地數據。
9.根據權利要求8所述的裝置,其特征在于,所述裝置還包括 存儲模塊,用于根據所述應用程序的信息存儲所述選取單元選取的所述預取數據信息; 所述加載模塊,具體包括 第一獲取單元,用于根據所述應用程序的信息獲取所述存儲模塊存儲的預取數據信息; 第二獲取單元,用于根據所述第一獲取單元獲取到的預取數據信息獲取對應的本地數據; 加載單元,用于將所述第二獲取單元獲取到的本地數據加載至內存。
10.根據權利要求6至9中任一權利要求所述的裝置,其特征在于,所述裝置還包括 輸出模塊,用于輸出應用程序列表,提示用戶在所述應用程序列表中選擇提高運行速度的應用程序; 接收模塊,用于根據用戶在所述輸出模塊輸出的應用程序列表中選擇的應用程序接收提高所述應用程序運行速度的指令以及所述應用程序的信息。
11.一種終端,其特征在于,所述終端包括提高應用程序運行速度的裝置; 其中,所述提高應用程序運行速度的裝置如所述權利要求6至10中任一權利要求所述的裝置。
全文摘要
本發明公開了一種提高應用程序運行速度的方法、裝置及終端,屬于計算機領域。方法包括采集應用程序運行時缺頁中斷對應的本地數據信息,本地數據信息包括本地數據所在文件的文件名、本地數據在文件內的偏移以及本地數據的大小;根據采集到的本地數據信息獲取對應的本地數據,并在獲取到提高應用程序運行速度的指令后,加載獲取到的本地數據。本發明通過加載根據應用程序運行時缺頁中斷對應的本地數據信息獲取到的本地數據,以減少應用程序訪問IO操作的耗時,提高應用程序運行速度;由于缺頁中斷對應的本地數據信息不局限于訪問場景,可增強速度提高的效果;針對不同應用程序具有不同的速度優化程度,提高速度優化的針對性,擴大速度優化的空間。
文檔編號G06F9/445GK102662713SQ20121010676
公開日2012年9月12日 申請日期2012年4月12日 優先權日2012年4月12日
發明者方斌, 李世平, 林道正, 聶科峰 申請人:騰訊科技(深圳)有限公司