我目前在MATLAB中實現不同的信號處理算法,以後用C++實現其中的一個。要在這些之間進行選擇,我將執行一些測試,其中一個是內存使用檢查。也就是說,我想看看不同算法使用多少內存。由於實現分爲子功能,因此在收集有關實際內存使用情況的信息時遇到問題。Matlab - 程序的內存使用
這是我到目前爲止已經試過:
我使用Profiler來檢查每個函數的內存使用情況。 問題:它只顯示分配的內存使用情況。它沒有顯示例如每個函數中變量的內存使用情況。
我在每個函數的末尾都使用了whos來收集有關函數工作區中所有變量的信息。然後我將這些添加到全局變量中。 問題:即使執行完成後,全局變量仍在增加,它似乎永不停止。
現在我的問題。我怎樣才能以一種相當簡單的方式獲得關於我的程序的內存使用情況的信息,包括所有功能?
致以問候
感謝您的回答。這意味着我將無法看到我的程序的峯值內存使用情況,對不對?你認爲在程序運行時查看任務管理器會有幫助嗎?或者,當我不執行任何代碼時,MATLAB的內存使用情況會發生變化? – shizzle 2013-03-13 19:08:43
'top'可能不會更新得足夠快以至於看不到內存中的短暫尖峯(比如將由我的答案中的代碼創建)......並且Matlab在做一些內存管理時很聰明,所以_application_似乎並沒有在每次分配一個變量時從操作系統請求內存。但在粗糙的層面上,它確實對你有一點幫助。看起來'pmap -x [pid]'命令提供了很多信息,但很難分析... – Floris 2013-03-13 19:45:19
+1任務管理器?聽起來像你在Windows上。從Sysinternals抓取Process Explorer;它具有可記住高水位的峯值內存使用量(從操作系統的角度來看)。如果你使用未記錄的「profile on -memory」選項,我相信每個函數都有一個高峯的內存使用,所以你可以從Matlab的角度來看它,你可以通過'profile('info')編程獲得它。 '。 .NET System.Diagnostics.Process類(可以從M代碼調用)將從操作系統視圖中顯示峯值內存度量。 – 2013-03-18 04:59:51