想請教一下"show buffer allocation"這一個功能如何開啟?
我找不到位置QQ
想請教一下"show buffer allocation"這一個功能如何開啟?
我找不到位置QQ
[QUOTE=艾爾]
想請教一下"show buffer allocation"這一個功能如何開啟?
我找不到位置QQ
[/QUOTE]
在 「Tools -> Advanced -> Show Buffer Allocations 」
[QUOTE=yao]
Jimmy-Chen說的我想一般有程式經驗的人大概會了解
只是我和Airbolt一樣,很訝異為什麼差一個indictor會造成這樣的差異
[/QUOTE]
嗯!
這是最難理解的地方,不知道是什麼原因造成的,
也是我最想知道的部分。
我還是不懂show buffer allocation怎麼用!?假設我已經寫好一個程式,執行show buffer allocation然後呢?
我猜
那一個indictor把資料限制在記憶體某區域,而不是讓程式自己去規劃,所以它就乖乖的不多吃記憶體了,這樣有道理嗎?
只是猜的 我很弱
大大,我執行些程發現錯誤,缺少"empty subvi.vi",不知在哪可以找到…
[QUOTE=skyatholuo]大大,我執行些程發現錯誤,缺少"empty subvi.vi",不知在哪可以找到.....[/QUOTE]
抱歉,之前傳錯了,現在下載就可以了:
[QUOTE=火火火]
我猜
那一個indictor把資料限制在記憶體某區域,而不是讓程式自己去規劃,所以它就乖乖的不多吃記憶體了,這樣有道理嗎?
只是猜的 我很弱
[/QUOTE]
我覺得 火 火 火 說的滿有道理,
只是不知道有哪位版友可以幫忙証實一下
真實的原因是什麼?
這個問題困惑很久了,
雖然知道有這個方法,
可是在不知其所以然的情況下,
還是無法應用在自己寫的程式之上。
倘若我使用這個方式在我的程式上~並做即時存取!會不會提高LABVIEW的處理速度!
還是說操過幾萬筆資料後
就因此變的越來越慢?
嗨~老話重提會不會太老舊~
最近也在寫跟yao兄之前一樣處理數據的程式~
也是跑一跑就盪掉~
目前是知道存檔後的array過大而造成記憶體爆掉~
後來改寫先存第一步資料再叫回處理第二步就OK~但還是在測試中
~不知道這個兩年前的話題到今天~各位有沒有新的見解呢?~
跟BOSS討論~說要想好資料流~不能狂操電腦的記憶體~哈哈~
我的確太過依賴電腦的能力了~所以最初寫的程式很累贅~撰寫方式瘦身中~
[QUOTE=Airbolt][QUOTE=艾爾]
想請教一下"show buffer allocation"這一個功能如何開啟?
我找不到位置QQ
[/QUOTE]
在 「Tools -> Advanced -> Show Buffer Allocations 」
[/QUOTE]
這個議題幫了現在的我很多忙,準備被我Write到AO而被預存在記憶體裡面的資料,約有1 MB~10 MB的資料
目前我使用的是2013(32-bit),要找到此工具順序為:Tools>>Profile>>Show Buffer Allocations
資料來源如下:
http://labviewwiki.org/Buffer_Allocation
There is a tool in LabVIEW called the "Show Buffer Allocations" tool. You can find it in a VI's menu at Tools>>Profile>>Show Buffer Allocations.... It is a useful tool for doing memory optimizations because it shows little dots every place that the LabVIEW compiler made a buffer allocation. Some people call these "copy dots" because people *think* these indicate where LabVIEW is making a copy of the data.
[QUOTE=Benjamin][QUOTE=jimmy-Chen]
如果先規劃一個記憶體區塊,來放置載入的資料呢?
不知道是不是可以解決這個問題?
[/QUOTE]
在LabVIEW7.1的研討會中,有提到運用「事先規劃一塊記憶體來存放資料,會節省許多系統資源」,附加檔如下:
執行的結果如下圖所示,如果有事先規劃記憶區塊,只花4ms,如果沒有事先規劃記憶區塊,則要花費1578ms,相差394.5倍:

[/QUOTE]
a. 11年後,LabVIEW 2013 (32-bit)的Buffer Allocations(小黑點)似乎變比較聰明,都是落在進迴圈前的Array Subset輸出端了,是否是LabVIEW有改進此部分編譯能力 (不確定)。
b. 另一方面,可能因為電腦速度加快,Iteration次數要約增加到100倍的750000,才會看得出時間差異 約91ms與172ms。
c. 我不斷增大Iteration的次數(1000倍與10000倍),兩個迴圈消耗時間雖然上升,但仍維持呈現後者約是前者的2倍。這個現象,是否代表著正確地預先分配記憶體雖然有改善,但預先分配還是能省下小小一筆時間。後者在迴圈裡還是會多做一些事。當迴圈裡只做一點點事時,多做一個小動作,佔掉的時間就幾乎要消耗為兩倍。
d. 另外,現在的LabVIEW有個呼叫SubVI時可使用的指令,Request Deallocation Function,是否能夠幫助到原先提問者的記憶體空間問題呢
「執行的結果如下圖所示,如果有事先規劃記憶區塊,只花4ms,如果沒有事先規劃記憶區塊,則要花費1582ms,相差395.5倍」
精彩的討論,來頂一下,另外,會不會NI看到這討論串後,改善記憶體配置方法,因此原問題無法重現。(哈,我亂猜的~)