欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種應(yīng)用于嵌入式開發(fā)平臺圖形函數(shù)的優(yōu)化實現(xiàn)方法

文檔序號:6573503閱讀:558來源:國知局
專利名稱:一種應(yīng)用于嵌入式開發(fā)平臺圖形函數(shù)的優(yōu)化實現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉及嵌入式軟件開發(fā)圖形函數(shù)領(lǐng)域,更具體的說,是涉及一種應(yīng)用于嵌入式開發(fā)平臺圖形函數(shù)的優(yōu)化實現(xiàn)方法。
背景技術(shù)
目前,嵌入式開發(fā)平臺圖形函數(shù)中的畫圖方法主要是QGfxRaster提供給Qt基本的畫圖函數(shù),是所有的畫圖函數(shù)類的父輩,所有的畫圖事件最終都會導致一個QGfxRaster函數(shù)調(diào)用[2],這些函數(shù)包括drawText、drawPointUnclipped、drawPoint、drawLine、 vline、drawThickPolyline、hline 、hlineUnclipped、hImageLineUnclipped、hAlphaLineUnclipped、fillRect、drawPolyLine、drawPolygon、scroll、blt、stretchBlt、tiledBlt等。
Qtopia在PC平臺上表現(xiàn)良好,但是Qtopia在Intel XScale PXA 255上的成績就不是那么好了。經(jīng)過實驗,整個Qtopia啟動大約花了28秒。Qtopia啟動時間是指Application::exec調(diào)用發(fā)生之前的時間。根據(jù)前人的經(jīng)驗,在經(jīng)過優(yōu)化之后,預(yù)計可以得到40%左右的性能提升。
對于畫線函數(shù)drawLine,傳統(tǒng)的算法是對于任意一條要求畫的線,都將分為三種情況去討論最后選擇用A、B、C種的一種方法實現(xiàn)畫線操作。三種情況分別是判斷dashedline,判斷gfx_storyLine,判斷以AB連線為矩形的形狀,從而使用三種畫線函數(shù)。
可以認為,畫線請求的分布應(yīng)該是平均的。即修改前,A、B、C都大約被執(zhí)行了1/3,這種情況下,A、B、C在執(zhí)行的時候仍然需要大量的判斷,浪費了很多時間,效率不高。同時由于三種情況判斷的時候沒有規(guī)律,Cache和TLB的命中率比較低。

發(fā)明內(nèi)容
為了獲得更好的啟動時間,提高畫圖函數(shù)的畫圖效率,本發(fā)明的目的在于提供一種應(yīng)用于嵌入式開發(fā)平臺圖形函數(shù)的優(yōu)化設(shè)計方法。
為解決技術(shù)問題,本發(fā)明通過以下的技術(shù)方案實現(xiàn)。
1、一種應(yīng)用于嵌入式開發(fā)平臺圖形函數(shù)的優(yōu)化實現(xiàn)方法,提供一種畫線方法,包括以下步驟(1)判斷選用畫線函數(shù)首先對兩個點A(x1,y1)和B(x2,y2)進行初始化,計算A點和B點的橫坐標和縱坐標之間的距離ax=|x2-x1|和ay=|y2-y1|,然后判斷A點和B點是否在矩形以內(nèi);(2)判斷A點和B點的橫坐標的大小,根據(jù)兩種結(jié)果,可以分為兩種情況以B點的橫坐標x2>x1的情況進行討論;對于B點的橫坐標x2<x1的情況,將其標記為1,它的處理同x2>x1的情況的處理過程;(3)判斷A點和B點的縱坐標的大小,分兩種情況,分析A點和B點的y2>y1情況;對A點和B點的y2<y1的情況,將其標記為2。
(4)判斷A點的橫坐標ax和A點的縱坐標ay的大小,分兩種情況,分析A點的橫坐標ax>ay的情況;對A點的橫坐標ax<ay情況,將其標記為3。
(5)根據(jù)步驟(1)~(4)的各種情況,根據(jù)坐標點的位置反饋值進行判斷,采用畫線函數(shù)完成畫線。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是首先,保證了跳轉(zhuǎn)時的循環(huán)不變性,即代碼有很高的對稱性,這可以提高命中率;其次,畫線操作的實現(xiàn)比優(yōu)化前更有效率,省去了很多循環(huán)和跳轉(zhuǎn);由于畫線操作的平均分布,所以這個效率的提高可以抵消二層判斷帶來的額外系統(tǒng)消耗。


圖1是現(xiàn)有技術(shù)中畫線函數(shù)的實現(xiàn)過程示意圖;圖2是本發(fā)明中畫線函數(shù)的實現(xiàn)過程示意圖。
具體實施例方式
結(jié)合附圖,下面對本發(fā)明進行詳細說明。
本發(fā)明按照上述畫圖流程對畫圖算法進行修改,在每個步驟進行一次判斷,有一個分支,然后根據(jù)不同的分支,采用16種具體畫線函數(shù)當中的一個進行畫線。包括以下步驟(1)判斷使用哪種畫線函數(shù)由附圖2,我們可以看到,首先要對兩個點A(x1,y1)和B(x2,y2)進行初始化,計算A和B兩點的橫坐標和縱坐標之間的距離,也就是計算ax=|x2-x1|,ay=|y2-y1|,然后判斷A和B兩點是否在舉行以內(nèi)。
初始化完成以后,判斷A和B兩點的橫坐標的大小,根據(jù)兩種結(jié)果,可以分為兩種路徑。兩種路徑接下去也要做同樣的判斷,我們以B的橫坐標大的情況,也就是x2>x1的情況進行討論,對于另一種情況,我們標記1,它的處理同x2>x1的情況是一樣的。
之后判斷A和B兩點的縱坐標的大小,同樣的,也分兩種對等的情況。我們按照附圖2的內(nèi)容,只看y2>y1,對另一種情況標記2。
第三個是判斷ax和ay的大小,分兩種對等的情況。我們看ax>ay的情況,對另一種情況標記3。
最后我們根據(jù)dashedline的值,選擇16種畫線函數(shù)中的一種。
(2)實現(xiàn)16種畫線函數(shù)我們采用的新的具體的畫線函數(shù),與原來的函數(shù)并沒有很大的變化,只是根據(jù)不同的情況進行具體的畫線,更加有針對性,跳轉(zhuǎn)更少。可以看附圖2。
為了檢驗的新的畫圖函數(shù)的效果,使用修改過的QTopia圖形函數(shù)庫進行實驗。我們使用的目標平臺是Intel XScale的開發(fā)板,使用的操作系統(tǒng)是ARMLinux。本次實驗所得的數(shù)據(jù)都是在這個平臺上獲得。
以下是我們的平臺詳細參數(shù)

以下是本發(fā)明實施例使用的其中一個畫圖函數(shù)intdi=0;intdc=dashes
;d=ay-(ax>>1);for(;;){if(!cr.contains(x,y))inside=inClip(x,y,&cr);if)inside&&(di&0x01)==0)drawPointUnclipped(x,scanLine(y));if(x==x2){//-----------draw work done,break the loop and return;GFX_ENDreturn;}if(--dc<=0){if(++di>=numDashes)di=0;dc=dashes[di];}if(d>=0){y++;d=d-ax;}
x++;d=d+ay;改動算法,編譯通過之后使用QtopiaQtopia-phone 2.0.0中自帶了一個benchmark工具叫做qtperf,這是一個標準的Qtopia的應(yīng)用程序。在本實驗中將其重新編譯之后放在$QPEDIR/src/tools/目錄下,在需要使用時可以通過命令行啟動qtperf,以獲得所需的相關(guān)數(shù)據(jù)。但是,因為Qtopia free2.1.1缺省不能編譯qtperf,所以我們需要手動配置qtperf到Qtopia free2.1.1中。方法是在$QPEDIR/src/general.pti的APP_PROJECTS宏定義中加入tools/qtperf。
經(jīng)過以上優(yōu)化之后得到的結(jié)果如下啟動時間約為25秒,性能獲得了約11%的提升。使用了qtperf,可以得到

可以看到,整體性能有顯著的提升。
最后,還需要注意的是,以上列舉的僅是本發(fā)明的一個具體實施例。顯然,本發(fā)明不限于以上實施例,還可以有許多變形。本領(lǐng)域的普通技術(shù)人員能從本發(fā)明公開的內(nèi)容直接導出或聯(lián)想到的所有變形,均應(yīng)認為是本發(fā)明的保護范圍。
權(quán)利要求
1.一種應(yīng)用于嵌入式開發(fā)平臺圖形函數(shù)的優(yōu)化實現(xiàn)方法,其特征在于,提供一種畫線方法,包括以下步驟(1)判斷選用畫線函數(shù)首先對兩個點A(x1,y1)和B(x2,y2)進行初始化,計算A點和B點的橫坐標和縱坐標之間的距離ax=|x2-x1|和ay=|y2-y1|,然后判斷A點和B點是否在矩形以內(nèi);(2)判斷A點和B點的橫坐標的大小,根據(jù)兩種結(jié)果,可以分為兩種情況以B點的橫坐標x2>x1的情況進行討論;對于B點的橫坐標x2<x1的情況,將其標記為1,它的處理同x2>x1的情況的處理過程;(3)判斷A點和B點的縱坐標的大小,分兩種情況,分析A點和B點的y2>y1情況;對A點和B點的y2<y1的情況,將其標記為2。(4)判斷A點的橫坐標ax和A點的縱坐標ay的大小,分兩種情況,分析A點的橫坐標ax>ay的情況;對A點的橫坐標ax<ay情況,將其標記為3。(5)根據(jù)步驟(1)~(4)的各種情況,根據(jù)坐標點的位置反饋值進行判斷,采用畫線函數(shù)完成畫線。
全文摘要
本發(fā)明涉及嵌入式軟件開發(fā)圖形函數(shù)領(lǐng)域,旨在一種應(yīng)用于嵌入式開發(fā)平臺圖形函數(shù)的優(yōu)化實現(xiàn)方法。該方法包括以下步驟(1)判斷選用畫線函數(shù)首先計算A點和B點的橫坐標和縱坐標之間的距離,判斷A點和B點是否在矩形以內(nèi);(2)判斷A點和B點的橫坐標的大小,對不同結(jié)果進行分析;(3)判斷A點和B點的縱坐標的大小,對不同情況進行分析;(4)判斷A點的橫坐標和縱坐標的大小,對不同情況進行分析;(5)根據(jù)坐標點的位置反饋值進行判斷,采用畫線函數(shù)完成畫線。該方法保證跳轉(zhuǎn)時的循環(huán)不變性,提高命中率;畫線操作的實現(xiàn)比優(yōu)化前更有效率,省去了很多循環(huán)和跳轉(zhuǎn);由于畫線操作的平均分布,抵消二層判斷帶來的額外系統(tǒng)消耗。
文檔編號G06F9/44GK101013367SQ200710067158
公開日2007年8月8日 申請日期2007年2月2日 優(yōu)先權(quán)日2007年2月2日
發(fā)明者陳天洲, 張楠, 黃江偉, 鄭臻煒 申請人:浙江大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
高平市| 株洲市| 大姚县| 建平县| 泰州市| 离岛区| 桐乡市| 石棉县| 嘉鱼县| 始兴县| 南漳县| 休宁县| 嘉荫县| 赤城县| 普定县| 延津县| 饶阳县| 华蓥市| 峨山| 惠州市| 民勤县| 甘南县| 澄城县| 瑞昌市| 岳普湖县| 如东县| 云和县| 顺昌县| 涿州市| 沧州市| 夹江县| 濮阳县| 黔南| 乳山市| 阳高县| 天水市| 双辽市| 霞浦县| 隆化县| 南木林县| 安图县|