• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      C++程序設(shè)計(jì)中的時(shí)間性能優(yōu)化探討

      2018-12-25 10:43:02昝道廣梁肖裕劉忠青徐西彤李晨輝山東科技大學(xué)電氣信息系
      數(shù)碼世界 2018年6期
      關(guān)鍵詞:指針程序設(shè)計(jì)內(nèi)存

      昝道廣 梁肖裕 劉忠青 徐西彤 李晨輝 山東科技大學(xué)電氣信息系

      隨著計(jì)算機(jī)硬件的不斷更新升級(jí),其內(nèi)存因素對(duì)于計(jì)算機(jī)硬件的影響越來(lái)越小,已經(jīng)不能限制程序計(jì)算的完善。應(yīng)用程序在計(jì)算機(jī)占有空間越來(lái)越富裕,程序在使用中不再首要考慮內(nèi)存因素。但是程序設(shè)計(jì)的時(shí)間性能在很多應(yīng)用場(chǎng)合依然發(fā)揮重要價(jià)值,例如實(shí)時(shí)嵌入式系統(tǒng)、需要處理大量的信息數(shù)據(jù)情景和對(duì)程序運(yùn)行速度要求高的情景等等。

      1 C++概述

      C++語(yǔ)言是一種能夠同時(shí)支持多種編程語(yǔ)言的編程語(yǔ)言集合。在具體程序設(shè)計(jì)過(guò)程中,為發(fā)揮其功能的靈活性,未在編譯器生成的程序中顯現(xiàn)出相應(yīng)的數(shù)據(jù)結(jié)構(gòu)和代碼。程序設(shè)計(jì)人員無(wú)法在載體上看到數(shù)據(jù)結(jié)構(gòu)和代碼,只有憑借自身積累的實(shí)踐經(jīng)驗(yàn),軟件工程師才會(huì)全面系統(tǒng)了解編譯器自動(dòng)生成的代碼時(shí)機(jī)和條件,因此很難把握C++程序的時(shí)間性能和空間性能。C++是在C語(yǔ)言的基礎(chǔ)上演化而來(lái),它具有C語(yǔ)言的應(yīng)用優(yōu)勢(shì),同時(shí)彌補(bǔ)了C語(yǔ)言的缺陷,很多C語(yǔ)言不能支撐的軟件開(kāi)發(fā)、系統(tǒng)開(kāi)發(fā)和引擎開(kāi)發(fā),都可以使用C++。現(xiàn)階段,計(jì)算機(jī)硬件的運(yùn)行速度越來(lái)越快,設(shè)計(jì)內(nèi)存空間也越來(lái)越大,需要引起注意的是對(duì)時(shí)間性能的優(yōu)化方面,還需要進(jìn)一步在程序設(shè)計(jì)中加以?xún)?yōu)化改進(jìn)。

      2 C++程序設(shè)計(jì)中的時(shí)間性能優(yōu)化

      2.1 合理使用inline

      Inline函數(shù)在程序編譯過(guò)程中,由調(diào)用指令轉(zhuǎn)變?yōu)楹瘮?shù)體代碼,即在編譯后的可執(zhí)行文件中,將原本需要調(diào)用函數(shù)的場(chǎng)合,更改為該函數(shù)的代碼,直接減少了函數(shù)調(diào)用過(guò)程中的進(jìn)棧和出棧操作步驟,因此提升了程序運(yùn)行中的時(shí)間性能。以下為通過(guò)合理使用inline來(lái)優(yōu)化時(shí)間性能的分析。直接在調(diào)用處插入函數(shù)代碼,使得程序編譯對(duì)代碼上下文信息有更加深入的了解,發(fā)揮出這些信息的支持作用,幫助人們利用編譯器來(lái)優(yōu)化代碼,但是我們并不詳細(xì)了解優(yōu)化流程和優(yōu)化內(nèi)容。如果不使用inline程序執(zhí)行到函數(shù)調(diào)用位置,需要具體執(zhí)行函數(shù)體所在地方的代碼。一般函數(shù)調(diào)用位置和函數(shù)代碼所在地方并不接近,容易造成操作系統(tǒng)的缺頁(yè)中斷,而在要求操作系統(tǒng)將缺頁(yè)位置處的代碼移植到硬盤(pán)內(nèi)存時(shí),需要消耗的時(shí)間就會(huì)呈現(xiàn)數(shù)量級(jí)增加情況,但是在使用inline的情況下就會(huì)降低缺頁(yè)中斷的發(fā)生率。

      2.2 謹(jǐn)慎使用虛函數(shù)

      C++語(yǔ)言是從C語(yǔ)言的基礎(chǔ)上發(fā)展和演化而來(lái)的程序設(shè)計(jì)語(yǔ)言,C++語(yǔ)言具有鮮明的特性和典型特征,例如虛函數(shù)和C++的虛函數(shù)都是多態(tài)場(chǎng)合下運(yùn)行,實(shí)現(xiàn)了很多程序設(shè)計(jì)的優(yōu)化和升級(jí),創(chuàng)新出這種功能的新用法,但是并非完全都是優(yōu)勢(shì)而不存在缺陷,由于虛函數(shù)的使用會(huì)加強(qiáng)更大空間壓力和時(shí)間壓力,降低了程序的空間性能和時(shí)間性能。因此在具體程序設(shè)計(jì)和運(yùn)行過(guò)程中,特定的虛函數(shù)類(lèi)對(duì)應(yīng)特定的虛函數(shù)表,函數(shù)表上主要保存的是函數(shù)指針,每次對(duì)虛函數(shù)進(jìn)行實(shí)例化操作后就增加相應(yīng)的虛函數(shù)表數(shù)量,這一過(guò)程耗費(fèi)一定量的時(shí)間和空間。謹(jǐn)慎使用虛函數(shù),減少降低程序時(shí)間性能的機(jī)會(huì),考慮其它辦法以此保障程序設(shè)計(jì)中的時(shí)間性能。

      2.3 合理使用智能指針

      C++程序中經(jīng)常使用到指針類(lèi)型。如果能夠在適當(dāng)場(chǎng)合下合理使用指針,不僅可以節(jié)省大量?jī)?nèi)存,而且還有助于節(jié)省運(yùn)行時(shí)間。例如,如果需要將眾多復(fù)雜的信息保存在程序內(nèi)部,我們需要將一個(gè)信息單元保存在單項(xiàng)種類(lèi)中,然后對(duì)這種類(lèi)型的對(duì)象保存在特定的某種STL容器內(nèi)部。如果是直接保存對(duì)象,一方面會(huì)讓單項(xiàng)個(gè)體信息存儲(chǔ)在多個(gè)對(duì)象中,浪費(fèi)了大量的內(nèi)存空間;另一方面選擇對(duì)象無(wú)論是從容器中存人或者是取出都需要大量的運(yùn)行時(shí)間。但是如果將指針作為存儲(chǔ)對(duì)象,那么對(duì)應(yīng)的信息單元僅僅需要個(gè)體對(duì)象保存完成,并且指針從容器中存入和取出的時(shí)間性能效率更高。但是由于指針容易導(dǎo)致內(nèi)存泄露,不方便軟件設(shè)計(jì)。因此軟件工程師必須明確控制指針在特定的時(shí)間內(nèi)被釋放,如果沒(méi)有將泄露內(nèi)存,并且對(duì)程序產(chǎn)生異常。

      3 結(jié)語(yǔ)

      綜上所述,時(shí)間性能優(yōu)化是C++程序設(shè)計(jì)中保證開(kāi)發(fā)質(zhì)量的必然要求,同時(shí)也是衡量的重要指標(biāo)。在空間性能已經(jīng)不再成為限制性因素的情況下,軟件設(shè)計(jì)的更多精力應(yīng)該集中于程序時(shí)間性能優(yōu)化方面。本文主要對(duì)C++程序設(shè)計(jì)中的時(shí)間優(yōu)化方法做出分析,在具體程序設(shè)計(jì)中,還可以利用改進(jìn)數(shù)據(jù)結(jié)構(gòu)和算法措施,來(lái)對(duì)時(shí)間性能加以?xún)?yōu)化。

      猜你喜歡
      指針程序設(shè)計(jì)內(nèi)存
      基于Visual Studio Code的C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)探索
      “春夏秋冬”的內(nèi)存
      偷指針的人
      從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
      電子制作(2019年9期)2019-05-30 09:42:04
      為什么表的指針都按照順時(shí)針?lè)较蜣D(zhuǎn)動(dòng)
      高職高專(zhuān)院校C語(yǔ)言程序設(shè)計(jì)教學(xué)改革探索
      基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
      PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
      ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
      基于內(nèi)存的地理信息訪(fǎng)問(wèn)技術(shù)
      鄂州市| 永德县| 靖宇县| 丽水市| 胶南市| 蒙山县| 缙云县| 肇源县| 安阳县| 鄂托克前旗| 天柱县| 海淀区| 锡林浩特市| 安仁县| 靖州| 湘阴县| 元江| 津南区| 北流市| 兰州市| 蓬安县| 湘潭市| 北碚区| 孟州市| 遂宁市| 双牌县| 保康县| 西藏| 左贡县| 兴文县| 壶关县| 海城市| 北辰区| 鲁山县| 静海县| 七台河市| 奎屯市| 宁国市| 古浪县| 屏山县| 澄城县|