合理使用內(nèi)存的一般原則
發(fā)布時間:2014/6/23 20:45:31 訪問次數(shù):692
(1)將一個程序劃分為一些子VI,一般不僅不會增加內(nèi)存的使用,反而會改進(jìn)內(nèi)存的使用。SM5013KDH-EL如果沒有特殊的顯示的需要,調(diào)用一個子VI僅僅相當(dāng)于把它的代碼復(fù)制到頂層VI,而執(zhí)行系統(tǒng)可以在不使用子VI時收回它占用的內(nèi)存。
但是在有些情況下使用子VI也會產(chǎn)生一個前面板控件數(shù)據(jù)的副本,例如前面板使用數(shù)據(jù)記錄、掛起后進(jìn)行數(shù)據(jù)范圍檢查、VI使用局部變量以及前面板在內(nèi)存中等。前面板進(jìn)入內(nèi)存的原因是前面板打開、VI修改后尚未保存、前面板數(shù)據(jù)打印、程序框圖中有屬性節(jié)點(diǎn)等。
(2)可以使用連線時就不使用局部變量傳遞數(shù)據(jù),更不要過度使用帶有數(shù)組或字符串的局部變量與全局變量,因?yàn)樽x,寫局部變量和全局變量時會產(chǎn)生一個數(shù)據(jù)的副本。
(3)盡可能不在前面板顯示大的數(shù)組或字符串。在打開的前面板上,顯示控件會為它顯示的數(shù)據(jù)保存一個副本。
(4)輸入數(shù)組的數(shù)據(jù)類型保持一致。因?yàn)樵谵D(zhuǎn)換數(shù)據(jù)類型時執(zhí)行系統(tǒng)會生成一個數(shù)據(jù)的副本。圖3-26所示的程序最后顯示的都是一個1000點(diǎn)的單精度數(shù)組,顯示數(shù)據(jù)用4KB內(nèi)存。但是圖3-26 (a)的程序由于產(chǎn)生8KB的雙精度數(shù)組,乘以標(biāo)量后轉(zhuǎn)換為單精度數(shù)紐又用了4KB內(nèi)存,所以程序總共用了16 KB內(nèi)存。而圖3-26 (b)的程序由于沒有數(shù)組的數(shù)據(jù)轉(zhuǎn)換,所以總共只用了8 KB內(nèi)存。
(5)避免使用復(fù)雜的、層次化的數(shù)據(jù)類型,例如包含大數(shù)組或字符串的簇或簇?cái)?shù)組。
(6)盡量不在循環(huán)中使用“創(chuàng)建數(shù)組”函數(shù)產(chǎn)生數(shù)組,因?yàn)檫@個函數(shù)會反復(fù)調(diào)用LabVIEW的內(nèi)存管理器。比較好的方法是使用自動索引或者預(yù)先定義一個數(shù)組大小,然后替換它的成員。處理字符串也有類似的問題,因?yàn)樽址趦?nèi)存中是作為字符數(shù)組處理的。
例如,圖3-27 (a)的程序和圖3-27 (b)的程序最后產(chǎn)生的結(jié)果是一樣的。但是圖3-27 (a)的程序在每次循環(huán)中調(diào)用“創(chuàng)建數(shù)組”函數(shù),反復(fù)改變數(shù)據(jù)緩沖區(qū)的大小以便容納新增加的數(shù)組成員,結(jié)果導(dǎo)致程序運(yùn)行速度降低。
用戶對于一個工程項(xiàng)目往往會有許多形式上的要求,這些要求有時會與程序性能產(chǎn)生嚴(yán)重的沖突,往往只能采取折中的方法來加以解決,即首先考慮問題的主要方面,并盡可能兼顧其他要求。因?yàn)橛?jì)算機(jī)配置的迅速提高,我們應(yīng)對這個問題越來越從容。
(1)將一個程序劃分為一些子VI,一般不僅不會增加內(nèi)存的使用,反而會改進(jìn)內(nèi)存的使用。SM5013KDH-EL如果沒有特殊的顯示的需要,調(diào)用一個子VI僅僅相當(dāng)于把它的代碼復(fù)制到頂層VI,而執(zhí)行系統(tǒng)可以在不使用子VI時收回它占用的內(nèi)存。
但是在有些情況下使用子VI也會產(chǎn)生一個前面板控件數(shù)據(jù)的副本,例如前面板使用數(shù)據(jù)記錄、掛起后進(jìn)行數(shù)據(jù)范圍檢查、VI使用局部變量以及前面板在內(nèi)存中等。前面板進(jìn)入內(nèi)存的原因是前面板打開、VI修改后尚未保存、前面板數(shù)據(jù)打印、程序框圖中有屬性節(jié)點(diǎn)等。
(2)可以使用連線時就不使用局部變量傳遞數(shù)據(jù),更不要過度使用帶有數(shù)組或字符串的局部變量與全局變量,因?yàn)樽x,寫局部變量和全局變量時會產(chǎn)生一個數(shù)據(jù)的副本。
(3)盡可能不在前面板顯示大的數(shù)組或字符串。在打開的前面板上,顯示控件會為它顯示的數(shù)據(jù)保存一個副本。
(4)輸入數(shù)組的數(shù)據(jù)類型保持一致。因?yàn)樵谵D(zhuǎn)換數(shù)據(jù)類型時執(zhí)行系統(tǒng)會生成一個數(shù)據(jù)的副本。圖3-26所示的程序最后顯示的都是一個1000點(diǎn)的單精度數(shù)組,顯示數(shù)據(jù)用4KB內(nèi)存。但是圖3-26 (a)的程序由于產(chǎn)生8KB的雙精度數(shù)組,乘以標(biāo)量后轉(zhuǎn)換為單精度數(shù)紐又用了4KB內(nèi)存,所以程序總共用了16 KB內(nèi)存。而圖3-26 (b)的程序由于沒有數(shù)組的數(shù)據(jù)轉(zhuǎn)換,所以總共只用了8 KB內(nèi)存。
(5)避免使用復(fù)雜的、層次化的數(shù)據(jù)類型,例如包含大數(shù)組或字符串的簇或簇?cái)?shù)組。
(6)盡量不在循環(huán)中使用“創(chuàng)建數(shù)組”函數(shù)產(chǎn)生數(shù)組,因?yàn)檫@個函數(shù)會反復(fù)調(diào)用LabVIEW的內(nèi)存管理器。比較好的方法是使用自動索引或者預(yù)先定義一個數(shù)組大小,然后替換它的成員。處理字符串也有類似的問題,因?yàn)樽址趦?nèi)存中是作為字符數(shù)組處理的。
例如,圖3-27 (a)的程序和圖3-27 (b)的程序最后產(chǎn)生的結(jié)果是一樣的。但是圖3-27 (a)的程序在每次循環(huán)中調(diào)用“創(chuàng)建數(shù)組”函數(shù),反復(fù)改變數(shù)據(jù)緩沖區(qū)的大小以便容納新增加的數(shù)組成員,結(jié)果導(dǎo)致程序運(yùn)行速度降低。
用戶對于一個工程項(xiàng)目往往會有許多形式上的要求,這些要求有時會與程序性能產(chǎn)生嚴(yán)重的沖突,往往只能采取折中的方法來加以解決,即首先考慮問題的主要方面,并盡可能兼顧其他要求。因?yàn)橛?jì)算機(jī)配置的迅速提高,我們應(yīng)對這個問題越來越從容。
上一篇:程序性能分析
熱門點(diǎn)擊
- 訪問片外ROM/RAM的指令時序
- 觸發(fā)( TRIG)
- SD卡的速度等級
- 堆棧指針SP( Stack Pointor)
- 16位特殊功能寄存器sfr16
- “黑焊盤”現(xiàn)象的產(chǎn)生原因
- “VISA讀取”函數(shù)酌主要參數(shù)及功能
- 項(xiàng)目依賴關(guān)系
- 通知器和隊(duì)列
- I/O端口
推薦技術(shù)資料
- DS2202型示波器試用
- 說起數(shù)字示波器,普源算是國內(nèi)的老牌子了,F(xiàn)QP8N60... [詳細(xì)]
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究