本發(fā)明涉及計算機應用技術(shù)領域,尤其涉及一種頁面模塊的渲染方法、裝置以及顯示設備。
背景技術(shù):
關(guān)于手機或者電腦上的頁面顯示,單頁應用及模塊化的普及,帶來的是產(chǎn)品性能及用戶體驗上的提升,而一旦應用模塊化顆粒度變細,必然帶來的是多模塊并發(fā)渲染的情況,每次渲染都將導致大量的CPU消耗。
所述渲染(Render)是指將計算機內(nèi)部的對象模型和數(shù)據(jù)通過算法指令轉(zhuǎn)變成可視對象的過程;在軟件運行過程中,有些模塊本身是可視的(或者能夠產(chǎn)生相應的可視化效果),對模塊的渲染,即是采用接口形式去渲染這些可視化模塊,將其轉(zhuǎn)換成文字或圖形等形式,輸出到顯示器屏幕上供用戶查看。
隨著計算機應用的普及,用戶對于軟件的要求已經(jīng)不僅僅局限于功能實現(xiàn)方面,畫面的好壞也成為評價軟件的重要因素之一。為了能夠向用戶提供更加便捷、美觀的可視化操作界面,需要運用大量的可視化模塊,相應地,軟件運行時,對于這些模塊的渲染需要占用大量的系統(tǒng)資源,因此對系統(tǒng)性能也有較高的要求,參見圖1,現(xiàn)有的渲染模式下,各頁面模塊獨自渲染,每次渲染都會觸發(fā)一次頁面的CPU消耗,因此模塊一多,渲染消耗量必然大增,即有多少模塊就有多少次渲染,圖1中有M0至M9十個頁面模塊,因此分別對應從t0至t9十個時刻開始的渲染任務。當系統(tǒng)性能無法滿足要求時,會造成畫面顯示速度的緩慢,嚴重時甚至會影響基本功能的執(zhí)行,造成很差的用戶體驗。
綜上所述,現(xiàn)有技術(shù)中針對頁面的每一模塊在需要渲染時都進行一次獨立的渲染過程,如果模塊較多,則渲染的次數(shù)相應的也會很多,導致CPU消耗 過大。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種頁面模塊的渲染方法、裝置以及顯示設備,用以實現(xiàn)對頁面模塊的周期性渲染,使得多個模塊可以通過一次渲染完成,從而有效降低CPU消耗。
本發(fā)明實施例提供的一種頁面模塊的渲染方法,包括:
當確定需要進行頁面模塊的渲染時,檢測任務隊列中是否有頁面模塊的渲染任務;
當檢測到所述任務隊列中有頁面模塊的渲染任務時,執(zhí)行該任務隊列中的頁面模塊的渲染任務。
通過該方法,當預設的頁面模塊的渲染周期到達時,檢測預設的任務隊列中是否有頁面模塊的渲染任務;當檢測到所述任務隊列中有頁面模塊的渲染任務時,執(zhí)行該任務隊列中的頁面模塊的渲染任務,因此可以實現(xiàn)對頁面模塊的周期性渲染,使得多個模塊可以通過一次渲染過程完成對這多個模塊的渲染,從而有效降低CPU消耗。
較佳地,當預設的頁面模塊的渲染周期到達時,確定需要進行頁面模塊的渲染。
較佳地,在預設的頁面模塊的渲染周期到達之前,該方法還包括:
對所述頁面模塊進行加載。
較佳地,所述任務隊列中的頁面模塊的渲染任務,是加載完成的頁面模塊的渲染任務。
較佳地,當預設的頁面模塊的渲染周期到達時,檢測預設的任務隊列中是否有頁面模塊的渲染任務,包括:
當預設的定時器超時時,檢測預設的任務隊列中是否有頁面模塊的渲染任務;其中,所述定時器的定時時長為所述預設的頁面模塊的渲染周期;
當檢測到所述任務隊列中有頁面模塊的渲染任務時,該方法還包括:重新啟動所述定時器。
較佳地,當未檢測到所述任務隊列中有頁面模塊的渲染任務時,該方法還包括:重新啟動所述定時器。
較佳地,執(zhí)行該任務隊列中的頁面模塊的渲染任務之后,該方法還包括:
釋放該任務隊列中的頁面模塊的渲染任務。
較佳地,釋放該任務隊列中的頁面模塊的渲染任務之后,該方法還包括:
將該任務隊列中的頁面模塊的渲染任務轉(zhuǎn)存到預設的緩存隊列中。
較佳地,執(zhí)行該任務隊列中的頁面模塊的渲染任務,包括:
按照預設規(guī)則執(zhí)行該任務隊列中的頁面模塊的渲染任務。
本發(fā)明實施例提供的一種頁面模塊的渲染裝置,包括:
第一單元,用于當確定需要進行頁面模塊的渲染時,檢測任務隊列中是否有頁面模塊的渲染任務;
第二單元,用于當檢測到所述任務隊列中有頁面模塊的渲染任務時,執(zhí)行該任務隊列中的頁面模塊的渲染任務。
較佳地,當預設的頁面模塊的渲染周期到達時,所述第一單元確定需要進行頁面模塊的渲染。
較佳地,所述第一單元還用于:在預設的頁面模塊的渲染周期到達之前,對所述頁面模塊進行加載。
較佳地,所述任務隊列中的頁面模塊的渲染任務,是加載完成的頁面模塊的渲染任務。
較佳地,所述第一單元,具體用于:當預設的定時器超時時,檢測預設的任務隊列中是否有頁面模塊的渲染任務;其中,所述定時器的定時時長為所述預設的頁面模塊的渲染周期;
當檢測到所述任務隊列中有頁面模塊的渲染任務時,所述第一單元還用于重新啟動所述定時器。
較佳地,當未檢測到所述任務隊列中有頁面模塊的渲染任務時,所述第一單元還用于:重新啟動所述定時器。
較佳地,執(zhí)行該任務隊列中的頁面模塊的渲染任務之后,該方法還包括:
釋放該任務隊列中的頁面模塊的渲染任務。
較佳地,釋放該任務隊列中的頁面模塊的渲染任務之后,該方法還包括:
將該任務隊列中的頁面模塊的渲染任務轉(zhuǎn)存到預設的緩存隊列中。
較佳地,執(zhí)行該任務隊列中的頁面模塊的渲染任務,包括:
按照預設規(guī)則執(zhí)行該任務隊列中的頁面模塊的渲染任務。
本發(fā)明實施例提供的一種顯示設備,包括本發(fā)明實施例提供的所述頁面模塊的渲染裝置。
本發(fā)明實施例提供的第二種頁面模塊的渲染方法,包括:
觸發(fā)頁面模塊的渲染任務,在同一時間點,對至少兩個加載完成的頁面模塊進行渲染。
本發(fā)明實施例提供的第三種頁面模塊的渲染方法,包括:
在第一時間間隔加載第一頁面模塊;
在第二時間間隔加載第二頁面模塊;
所述第一頁面模塊和第二頁面模塊之中的至少一者,在加載完成后,經(jīng)過一定的延遲時間后被渲染。
附圖說明
圖1為現(xiàn)有技術(shù)中的渲染模式示意圖;
圖2為本發(fā)明實施例提供的一種頁面模塊的渲染方法的總體流程示意圖;
圖3為本發(fā)明實施例提供的渲染模式示意圖;
圖4為本發(fā)明實施例提供的一種頁面模塊的渲染裝置的結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明實施例提供了一種頁面模塊的渲染方法、裝置以及顯示設備,用以實現(xiàn)對頁面模塊的周期性渲染,使得多個模塊可以通過一次渲染完成,從而有效降低CPU消耗。
本發(fā)明實施例增加定時功能,定時器每執(zhí)行一次,可以理解為一個幀(即觸發(fā)一次渲染),每個模塊的渲染過程并非在前置任務完成后直接渲染,而是等到定時器超時時進行渲染,因此,與現(xiàn)有技術(shù)相比,原本多次的渲染在這樣歸組后,只發(fā)生了固定的少數(shù)幾次的渲染,大量減少了CPU渲染的消耗。
下面結(jié)合附圖對本發(fā)明實施例提供的技術(shù)方案進行詳細說明。
參見圖2,本發(fā)明實施例提供的一種頁面模塊的渲染方法,包括步驟:
S101、當確定需要進行頁面模塊的渲染時,檢測任務隊列中是否有頁面模塊的渲染任務;
本發(fā)明實施例中所述的頁面,可以是網(wǎng)頁;所述的頁面模塊,為頁面經(jīng)常用到的結(jié)構(gòu)性元素,是構(gòu)成頁面的主要內(nèi)容。
S102、當檢測到所述任務隊列中有頁面模塊的渲染任務時,執(zhí)行該任務隊列中的頁面模塊的渲染任務。
通過該方法,當預設的頁面模塊的渲染周期到達時,檢測預設的任務隊列中是否有頁面模塊的渲染任務;當檢測到所述任務隊列中有頁面模塊的渲染任務時,執(zhí)行該任務隊列中的頁面模塊的渲染任務,因此可以實現(xiàn)對頁面模塊的周期性渲染,使得多個模塊可以通過一次渲染過程完成對這多個模塊的渲染,從而有效降低CPU消耗。
較佳地,當預設的頁面模塊的渲染周期到達時,確定需要進行頁面模塊的渲染。
周期是固定的時間間隔,實際實施時也可以是非固定時間間隔,即不是周期性地檢測是否需要進行渲染,例如,只要有3個渲染任務加載完成即開始渲染。
較佳地,在預設的頁面模塊的渲染周期到達之前,該方法還包括:
對所述頁面模塊進行加載,所謂加載,例如具體包括初始化頁面模塊所使用的數(shù)據(jù)、請求頁面模塊的數(shù)據(jù)等前置任務。
以瀏覽器加載頁面模塊為例,一般瀏覽器進行頁面模塊的加載過程包括:當接收到用戶設備提交的URL(Uniform/Universal Resource Locator,統(tǒng)一資源定位符,也被稱為網(wǎng)頁地址)請求時(例如,用戶設備在瀏覽器的地址欄輸入網(wǎng)址),向相應服務器請求網(wǎng)頁模塊的數(shù)據(jù),并將請求到的頁面模塊的數(shù)據(jù)下載到瀏覽器客戶端,然后調(diào)用頁面模塊的渲染裝置對該頁面模塊的數(shù)據(jù)進行渲染,通過瀏覽器窗口展示經(jīng)渲染處理后的頁面。
較佳地,所述任務隊列中的頁面模塊的渲染任務,是加載完成的頁面模塊的渲染任務。
具體的,頁面模塊的渲染裝置執(zhí)行所述任務隊列中的加載完成的頁面模塊的渲染任務的過程,例如具體包括:首先,頁面模塊的渲染裝置對加載完成的頁面模塊的數(shù)據(jù)進行解析;然后,頁面模塊的渲染裝置根據(jù)數(shù)據(jù)解析的結(jié)果對頁面模塊的數(shù)據(jù)進行排版;最后,頁面模塊的渲染裝置對頁面進行繪制。
較佳地,當預設的頁面模塊的渲染周期到達時,檢測預設的任務隊列中是否有頁面模塊的渲染任務,包括:
當預設的定時器超時時,檢測預設的任務隊列中是否有頁面模塊的渲染任務;其中,所述定時器的定時時長為所述預設的頁面模塊的渲染周期;
當檢測到所述任務隊列中有頁面模塊的渲染任務時,該方法還包括:重新啟動所述定時器。
較佳地,當未檢測到所述任務隊列中有頁面模塊的渲染任務時,該方法還包括:重新啟動所述定時器。
也就是說,本發(fā)明實施例中,在監(jiān)測是否到達頁面模塊的渲染周期時,是通過定時器來實現(xiàn)的,定時器的定時時長即頁面模塊的渲染周期的時間長度,定時器超時時,立即檢測任務隊列中是否有需要執(zhí)行的渲染任務,有則執(zhí)行,沒有則重新啟動定時器,其中當任務隊列中有需要執(zhí)行的渲染任務時,可以等 待一段時間后重新啟動定時器,也可以在定時器超時后立即重新啟動定時器,其中,所述等待的時間即為渲染任務執(zhí)行所需的時間。
參見圖3,由于本發(fā)明實施例增加了的定時功能,定時器每執(zhí)行一次,可以理解為一個幀(圖3中垂直于時間軸的灰色虛線即表示每一幀的渲染觸發(fā)),每個頁面模塊的渲染過程并非在加載完成后直接渲染,而是等到幀時間到達后進行渲染,即所有模塊都按照定時器的設置,周期性的進行渲染,因此與圖1中現(xiàn)有的渲染模式相比,在相同頁面模塊,以及相同的時間長度內(nèi),本發(fā)明實施例中圖3所示的渲染過程,只發(fā)生了三次,即分別是在t0、t1、t2時刻開始進行的渲染過程,因此大量減少了CPU渲染的消耗。具體地,參見圖3,在t0時刻,有頁面模塊M2、M3、和M4三個渲染任務開始執(zhí)行,并且,頁面模塊M2、M4兩個渲染任務經(jīng)過一定的時間延遲后被執(zhí)行;在t1時刻,有頁面模塊M0、M1、和M5三個渲染任務開始執(zhí)行,并且,頁面模塊M0、M1、和M5三個渲染任務均經(jīng)過一定的時間延遲后被執(zhí)行;在t2時刻,有頁面模塊M6、M7、M8、和M9四個渲染任務開始執(zhí)行,并且,頁面模塊M6、M7、M8、和M9四個渲染任務均經(jīng)過一定的時間延遲后被執(zhí)行。
較佳地,執(zhí)行該任務隊列中的頁面模塊的渲染任務之后,該方法還包括:
釋放該任務隊列中的頁面模塊的渲染任務。具體地,可以釋放一部分頁面模塊的渲染任務,也可以釋放該任務隊列中的全部頁面模塊的渲染任務。例如,根據(jù)頁面模塊的渲染裝置的資源占用情況(例如CPU的占用情況)決定釋放哪個或哪些已渲染的頁面模塊的數(shù)據(jù),比較頁面模塊的數(shù)據(jù)使用的緩存空間的大小,可以優(yōu)先釋放使用緩存空間最大的頁面模塊的數(shù)據(jù)?;蛘?,根據(jù)頁面的歷史訪問次數(shù)決定釋放哪個頁面對應的模塊的數(shù)據(jù),可以提前記錄已渲染完成的頁面的歷史訪問次數(shù),并與其他頁面的歷史訪問次數(shù)進行比較,可以優(yōu)先釋放頁面的歷史訪問次數(shù)最少的頁面中包括的模塊的數(shù)據(jù)。這樣可以進一步節(jié)約內(nèi)存占用量,使得頁面瀏覽器保持運行流暢。
進一步的,為了減少頁面請求時所產(chǎn)生的網(wǎng)絡流量,可以在頁面模塊的渲 染裝置加載頁面模塊的數(shù)據(jù)之后,在本地保存已加載的頁面模塊的數(shù)據(jù)。這樣,如果用戶設備請求再次加載同一頁面中的模塊的數(shù)據(jù),則可以直接調(diào)用本地保存的該頁面的模塊的數(shù)據(jù)。因此,較佳地,釋放該任務隊列中的頁面模塊的渲染任務之后,該方法還包括:
將該任務隊列中的頁面模塊的渲染任務(其中包括已加載的頁面模塊的數(shù)據(jù))轉(zhuǎn)存到預設的本地緩存隊列中。
例如,在進行頁面模塊的渲染任務完成之后,根據(jù)預設規(guī)則釋放該任務隊列中的頁面模塊的渲染任務,假設釋放的頁面模塊的數(shù)據(jù)為第一頁面模塊的數(shù)據(jù),而在這之前第一頁面模塊的數(shù)據(jù)已經(jīng)保存在了本地的緩存隊列中,在此情況下,如果希望再次瀏覽這個第一頁面模塊的數(shù)據(jù)對應的第一頁面時,可以直接從緩存隊列中獲取本地存儲的第一頁面模塊的數(shù)據(jù),并根據(jù)上述步驟重新加載該第一頁面模塊的數(shù)據(jù)。
因此,在瀏覽器客戶端獲取待加載的頁面模塊的數(shù)據(jù)時,可以先判斷本地是否保存有待加載的頁面模塊的數(shù)據(jù),如果是,則直接調(diào)用本地保存的待加載頁面模塊的數(shù)據(jù),否則,可以從網(wǎng)絡側(cè)下載該待加載頁面模塊的數(shù)據(jù)。這樣,在本地已保存了待加載頁面模塊的數(shù)據(jù)的情況下,則可以直接使用本地的頁面模塊的數(shù)據(jù),無需下載,有效的減少了網(wǎng)絡資源的浪費。
較佳地,執(zhí)行該任務隊列中的頁面模塊的渲染任務,包括:
按照預設規(guī)則執(zhí)行該任務隊列中的頁面模塊的渲染任務。例如,可以按照頁面訪問請求的先后順序,或者按照頁面模塊的渲染任務所需占用的內(nèi)存大小,或者按照預設的每次渲染任務最多可以執(zhí)行的頁面模塊的渲染任務的個數(shù),執(zhí)行該任務隊列中的一部分或全部的頁面模塊的渲染任務。一般情況下,可以一次執(zhí)行該任務隊列中的全部的頁面模塊的渲染任務,即每次定時器超時時,都一次性地調(diào)取該任務隊列中的全部的頁面模塊的渲染任務并且進行并行的執(zhí)行。
以不停地循環(huán)啟動定時器,并且定時時長是50毫秒的情況為例,在這50 毫秒內(nèi)當任務隊列中有頁面模塊的渲染任務或有其他頁面模塊的渲染任務進入該任務隊列時,會進在該任務隊列中進行等待,等到定時器超時時會一起執(zhí)行該任務隊列中所有渲染任務。若測試時間為頁面開始運行的第2秒至第7秒,以避免初始化的框架加載等性能干擾,渲染和重繪時間與現(xiàn)有技術(shù)相比縮短了40%以上。經(jīng)過測試,CPU執(zhí)行時間上升了28%,渲染時間降低了42%。
本發(fā)明實施例提供的技術(shù)方案,可以用于網(wǎng)頁游戲、網(wǎng)頁動畫、WEB應用等頻繁操作HTML元素的場景,并提高其流暢性。
與上述方法相對應地,參見圖4,本發(fā)明實施例提供的一種頁面模塊的渲染裝置,包括:
第一單元11,用于當確定需要進行頁面模塊的渲染時,檢測任務隊列中是否有頁面模塊的渲染任務;
第二單元12,用于當檢測到所述任務隊列中有頁面模塊的渲染任務時,執(zhí)行該任務隊列中的頁面模塊的渲染任務。
較佳地,當預設的頁面模塊的渲染周期到達時,所述第一單元確定需要進行頁面模塊的渲染。
較佳地,所述第一單元還用于:在預設的頁面模塊的渲染周期到達之前,對所述頁面模塊進行加載。
較佳地,所述任務隊列中的頁面模塊的渲染任務,是加載完成的頁面模塊的渲染任務。
較佳地,所述第一單元,具體用于:當預設的定時器超時時,檢測預設的任務隊列中是否有頁面模塊的渲染任務;其中,所述定時器的定時時長為所述預設的頁面模塊的渲染周期;
當檢測到所述任務隊列中有頁面模塊的渲染任務時,所述第一單元還用于重新啟動所述定時器。
較佳地,當未檢測到所述任務隊列中有頁面模塊的渲染任務時,所述第一單元還用于:重新啟動所述定時器。
較佳地,執(zhí)行該任務隊列中的頁面模塊的渲染任務之后,該方法還包括:
釋放該任務隊列中的頁面模塊的渲染任務。
較佳地,釋放該任務隊列中的頁面模塊的渲染任務之后,該方法還包括:
將該任務隊列中的頁面模塊的渲染任務轉(zhuǎn)存到預設的緩存隊列中。
較佳地,執(zhí)行該任務隊列中的頁面模塊的渲染任務,包括:
按照預設規(guī)則執(zhí)行該任務隊列中的頁面模塊的渲染任務。
以上各個單元,具體地,可以由處理器等實體裝置實現(xiàn)。
本發(fā)明實施例提供的一種顯示設備,包括本發(fā)明實施例提供的所述頁面模塊的渲染裝置。
本發(fā)明實施例提供的第二種頁面模塊的渲染方法,包括:
觸發(fā)頁面模塊的渲染任務,在同一時間點,對至少兩個加載完成的頁面模塊進行渲染。
本發(fā)明實施例提供的第三種頁面模塊的渲染方法,包括:
在第一時間間隔加載第一頁面模塊;
在第二時間間隔加載第二頁面模塊;
所述第一頁面模塊和第二頁面模塊之中的至少一者,在加載完成后,經(jīng)過一定的延遲時間后被渲染。
其中,所述的第一時間間隔和第二時間間隔,以及所述的延遲時間,都可以根據(jù)具體的實際需要而定。
綜上所述,本發(fā)明實施例提供的技術(shù)方案中,當預設的頁面模塊的渲染周期到達時,檢測預設的任務隊列中是否有頁面模塊的渲染任務;當檢測到所述任務隊列中有頁面模塊的渲染任務時,執(zhí)行該任務隊列中的頁面模塊的渲染任務,因此可以實現(xiàn)對頁面模塊的周期性渲染,使得多個模塊可以通過一次渲染過程完成對這多個模塊的渲染,從而有效降低CPU消耗。
本領域內(nèi)的技術(shù)人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié) 合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。