亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于代碼優(yōu)化的“編譯原理”課程實踐教學研究

        2022-12-12 14:54:01王峰閻娟張浩軍
        計算機應用文摘·觸控 2022年21期
        關鍵詞:編譯原理實踐教學

        王峰 閻娟 張浩軍

        關鍵詞:編譯原理;代碼優(yōu)化;實踐教學

        1引言

        “編譯原理”是一門重要的計算機專業(yè)課程,通過該課程的學習和實踐,既可加深學生對程序設計語言的設計與實現(xiàn)等知識的綜合理解,又可多角度地提高實踐動手能力及綜合應用能力[1-3]。特別是,“編譯原理”課程與計算思維具有緊密的聯(lián)系,為培養(yǎng)學生的計算思維能力提供了一個良好的平臺[4]。但“編譯原理”具有內(nèi)容多、概念多、理論性強、高度抽象等特點,被普遍認為是一門既難教又難學的課程。

        該課程中的代碼優(yōu)化主要是針對編譯器,但大部分由編譯器執(zhí)行的優(yōu)化僅涉及控制流程的簡化和變量的訪問方式等,并且由于大部分學生畢業(yè)后并不會從事編譯器的設計工作,因此很多學生會覺得相關理論知識的作用不大。同時,隨著計算機硬件技術的飛速發(fā)展,計算機的計算能力日益增強,因此學生在學習程序設計語言的時候?qū)⒏嗟木Ψ旁诹顺绦蜻壿嫷膶崿F(xiàn)上,而忽略了代碼優(yōu)化,從而導致學生對優(yōu)化相關知識的重要性認識不足。實際上,代碼優(yōu)化在軟件開發(fā)過程中,特別是在嵌入式等對實時性要求較高的系統(tǒng)開發(fā)中的作用是非常大的。本文針對工程型和應用型人才培養(yǎng)的目標,以圖像處理中將RGB格式的彩色圖像轉(zhuǎn)換為灰度圖像為例,探討編譯原理中代碼優(yōu)化相關技術在實際工程中的應用,以加深學生對編譯理論知識的理解,建立理論和實際的聯(lián)系,強化實踐動手能力,從而提高學生的編程能力和綜合素質(zhì)。

        2代碼優(yōu)化概述

        代碼優(yōu)化是編譯程序中的一個重要環(huán)節(jié),其實質(zhì)是對代碼進行等價變換,目的是提高由編譯程序生成的目標程序的質(zhì)量,即加快目標程序的運行速度或減少目標程序所占的存儲空間,或兩者兼具[5-7]。

        代碼優(yōu)化是為了編寫出更高效的代碼,故在進行代碼優(yōu)化時須遵循三個原則:(1)等價原則,即優(yōu)化不能改變程序的運行結果;(2)有效原則,即優(yōu)化后的代碼應比未優(yōu)化代碼具有更高的時空效率;(3)盈利或合算原則,即優(yōu)化帶來的利益應大于優(yōu)化工作所付出的代價。

        按照與機器的關系,代碼優(yōu)化可分為與機器無關的優(yōu)化和與機器相關的優(yōu)化,二者在編譯程序中所處的階段是不一樣的,前者是在源程序或中間代碼上進行優(yōu)化:后者是在目標代碼上進行優(yōu)化。在與機器無關的優(yōu)化中,根據(jù)它所涉及的程序范圍可分為局部優(yōu)化、循環(huán)優(yōu)化和全局優(yōu)化三個不同的級別。局部優(yōu)化是在基本塊內(nèi)的優(yōu)化,循環(huán)優(yōu)化是對循環(huán)中的代碼進行優(yōu)化,而全局優(yōu)化則是在整個程序范圍內(nèi)的優(yōu)化。優(yōu)化方法包括數(shù)據(jù)流分析、控制流分析和程序變換等。代碼優(yōu)化的不同分類及相關優(yōu)化技術如表1所列。

        3代碼優(yōu)化實踐教學

        “編譯原理”課程中的代碼優(yōu)化都是針對編譯程序的中間代碼和目標代碼進行的,而學生平常接觸更多的是源代碼,并且將來也更多的是從事源代碼的開發(fā)工作。因此,學生對相關理論知識在實際工程中的應用缺乏了解,從而對相關優(yōu)化知識的掌握不夠深入,也較難將相關優(yōu)化知識應用于實際編程中。實際上,在嵌入式系統(tǒng)等實時性要求較高的應用中,代碼優(yōu)化是一個非常重要的環(huán)節(jié)。本節(jié)以圖像處理中最基本的彩色圖像轉(zhuǎn)換為灰度圖像為例,討論相關編譯優(yōu)化知識在實際工程中的應用,以增進學生對編譯優(yōu)化知識的了解,提高學生的編程能力。

        3.1問題描述

        在圖像模式識別工程中,為了便于處理和識別,經(jīng)常需要將RGB格式的彩色圖像轉(zhuǎn)換為灰度圖像,圖像轉(zhuǎn)換公式[8]為:

        其中,R,G,B分別代表每個像素在RGB顏色空間中的紅、綠和藍三個顏色分量,Y為變換后所得灰度圖像中像素的灰度級,其取值均為[0,255]的整數(shù)。本節(jié)中圖像大小為720*576*24bit。

        3.2優(yōu)化實踐

        為實現(xiàn)上述功能,首先,定義如下數(shù)據(jù)結構:

        步驟1:變換循環(huán)控制條件

        上述代碼是按照“先列后行”的順序來對二維數(shù)組進行遍歷的,而在C語言中,一個二維數(shù)組在計算機中存儲時,是按照“先行后列”的順序依次存儲的。因此,“先列后行”遍歷發(fā)生的頁面交換次數(shù)要比“先行后列”多,且cache命中率相對較低。所以,通過調(diào)整語句順序,變換循環(huán)控制條件,可以將上述函數(shù)修改為:

        步驟2:數(shù)據(jù)結構優(yōu)化

        因圖像為二維數(shù)據(jù),故直接采用二維數(shù)組來存儲圖像數(shù)據(jù),代碼較直觀、可讀性強。但編譯器處理二維數(shù)組的效率低于一維數(shù)組,因此可改用一維數(shù)組來存儲圖像數(shù)據(jù),即將變量定義為:

        經(jīng)上述優(yōu)化后,函數(shù)的運行時間下降為9.80ms。

        步驟3:合并已知量,刪除無用代碼

        上述代碼循環(huán)內(nèi)存在無用賦值的情況,刪除多余變量和對應的賦值語句,合并已知量,即得:優(yōu)化后函數(shù)的運行時間變?yōu)?.06ms。

        步驟4:代數(shù)變換

        上述代碼中最主要的運算在于對每個像素點利用公式(1)進行的浮點數(shù)運算。顯然,計算機對整數(shù)的運算速度要快于浮點運算,因此應用代數(shù)變換可將此操作改為整數(shù)運算,經(jīng)此優(yōu)化后,函數(shù)的運行日寸間進一步縮短為3.37ms。

        步驟5:強度削弱(移位實現(xiàn)除法)

        由于計算機的移位操作速度快于除法,因此可以利用移位操作來實現(xiàn)上述除法運算,從而降低運算強度,即將上述代碼改為:經(jīng)此優(yōu)化后,函數(shù)的運行時間進一步減少為2.82ms。

        步驟6:強度削弱(查表)

        在上述代碼中,每個像素的R,G和B值都需要進行乘法運算,由于這三個變量的取值范圍均為[0,255],因此可以通過在外定義查找表的方法來減少計算量,即將此范圍內(nèi)的值分別乘以306、601和1 17并進行移位操作,然后將計算得到的值用三個數(shù)組分別加以存儲.即:

        在此基礎上,循環(huán)內(nèi)的每個像素不須計算便可直接通過查找表的方法快速實現(xiàn)灰度轉(zhuǎn)換

        顯然,這也是一種以犧牲內(nèi)存為代價節(jié)省計算時間的方法,經(jīng)過此優(yōu)化后,函數(shù)運行時間進一步降低為1.93ms。

        步驟7:循環(huán)展開

        在上述代碼的循環(huán)體內(nèi),因各像素的轉(zhuǎn)換是獨立進行的,不存在數(shù)據(jù)依賴,故可以進行循環(huán)展開,減少循環(huán)迭代次數(shù),有利于CPU的流水線工作,從而提高運行速度。比如,將函數(shù)改為:

        上文各步驟優(yōu)化后的函數(shù)運行時間變化如圖1所示。從圖1可以看出,經(jīng)過上述各步驟的優(yōu)化后,函數(shù)運行時間從優(yōu)化前的21.96ms下降為1.63ms,優(yōu)化效果非常明顯。

        上述優(yōu)化實例中包含局部優(yōu)化、循環(huán)優(yōu)化、與機器無關的優(yōu)化和與機器相關的優(yōu)化等知識。同時,為進一步增強學生的工程應用能力,在教學中還補充了對相關程序分析工具的介紹。在大型實際開發(fā)項目中,可以利用GProf和dotTrace等工具來發(fā)現(xiàn)程序中的瓶頸,并有針對性地進行代碼優(yōu)化,從而提高系統(tǒng)的運行效率。

        4結束語

        針對“編譯原理”課程教學中的代碼優(yōu)化,本文在簡要介紹其原理和相關優(yōu)化技術的基礎上,重點從實踐教學的角度,以圖像模式識別工程中的圖像格式轉(zhuǎn)換為例,探討了相關編譯優(yōu)化技術在實際工程中的應用。通過面向?qū)嶋H應用的優(yōu)化實踐教學,有助于提高學生對課程的重視程度,調(diào)動學生的積極性和主動性,培養(yǎng)學生的實踐創(chuàng)新能力,幫助學生在深入了解編譯器工作原理和優(yōu)化技術的基礎上,提高代碼編寫的質(zhì)量。同時,也能將編譯原理和程序設計語言、操作系統(tǒng)等課程的相關知識聯(lián)系起來,從而可以從多角度提高學生的綜合應用能力,切實有效地提高學生的專業(yè)素質(zhì),并在實踐中取得較好的教學效果。

        猜你喜歡
        編譯原理實踐教學
        《編譯原理》教學方法初探
        基于專業(yè)規(guī)范的編譯原理混合式教學改革
        軟件學院編譯原理實踐課程的教學探索
        計算機教育(2016年8期)2016-12-24 10:24:00
        基于MOOC的編譯原理分階段課程教學研究
        計算機教育(2016年9期)2016-12-21 00:32:22
        營造興趣啟蒙式學習氛圍的編譯原理首課設計
        計算機教育(2016年7期)2016-11-10 08:48:50
        茶學專業(yè)校企合作實踐教學探索
        考試周刊(2016年79期)2016-10-13 23:35:16
        《電氣工程畢業(yè)設計》 課程的教學設計
        考試周刊(2016年79期)2016-10-13 23:26:02
        研究型學習在傳熱學實踐教學中的應用
        大學教育(2016年9期)2016-10-09 08:34:10
        思想政治理論課實踐教學研究述評
        大學教育(2016年9期)2016-10-09 08:17:37
        高職院校商務禮儀課程教學改革探索芻議
        大學教育(2016年9期)2016-10-09 08:12:01
        97久久天天综合色天天综合色hd| 亚洲乱码中文字幕一线区| 中国免费一级毛片| 中文字幕人妻av一区二区| 一区二区三区四区在线观看日本| 久久精品国产亚洲av超清| 国产欧美一区二区精品久久久 | 午夜精品男人天堂av| 麻豆最新国产av原创| 亚洲av永久无码精品网站在线观看| 久久99精品国产麻豆| 亚洲AV无码久久精品成人| 日本中文字幕av网址| 国产草逼视频免费观看| 国产男女无遮挡猛进猛出| 国产精品入口牛牛影视| 亚洲无码中文字幕日韩无码| 亚洲国产精品激情综合色婷婷| 校园春色综合久久精品中文字幕 | 亚洲综合网国产精品一区| 久久久久久国产精品免费免费男同| 国产精品毛片无码| 国产成人综合久久精品推荐免费| 久久精品中文字幕免费| 日韩一区二区三区熟女| 欧美日韩亚洲中文字幕二区| 人人狠狠综合久久亚洲| 国产精品白浆无码流出| 熟女乱乱熟女乱乱亚洲| 精品含羞草免费视频观看| 樱花草在线播放免费中文| 亚洲综合色婷婷久久| 国产三级精品三级在线| 国产精品熟女一区二区三区| www射我里面在线观看| AV无码一区二区三区国产| 99久久无色码中文字幕鲁信| 日韩精品免费av一区二区三区 | 激情文学人妻中文字幕| 少妇一区二区三区久久| 内射人妻少妇无码一本一道|