張智星 jang@cs.nthu.edu.tw http://www.cs.nthu.edu.tw/~jang 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 程式計時 張智星 jang@cs.nthu.edu.tw http://www.cs.nthu.edu.tw/~jang 清大資工系.

Slides:



Advertisements
Similar presentations
定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
Advertisements

第一單元 建立java 程式.
第 5 章 中國的都市.
第六讲 MATLAB 语言程序设计 6.1 MATLAB语言的函数的基本结构 6.2 全局、局部变量、子函数与私有目录
MATLAB 程式設計 時間量測 清大資工系 多媒體資訊檢索實驗室.
Introduction to C Programming
計算機程式語言實習課.
多樂一甲 謝佩臻 4A3K0009.
中五級中史科及通識科跨科研習 研習大澳的「宗教文化」─ 廟宇的研習 指導老師:周婉儀老師 組員: 陳偉欽 5a (15)
引導者的角色 組別:第5組 4A1I0003 劉芷媛 4A1I0004 陳安琪 4A1I0014 陳佳瑩 4A1I0046 葉倢茹
您買美元了嗎? 退休規劃 全球外幣保單.
古文閱讀 – 像虎伏獸 明 劉基 組員: 5號江依倫 6號江若薇 12號張珉芫 32號蔡燕如.
第8章 机床操作 主讲:臧红彬 博士.
2006年台灣醫學中心大搜查 聰明病人 完全就醫指南.
性別透視鏡 鳳鳴電台 高宜君老師.
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
國語文好點子趴辣客教學食譜 甜點:〈焦糖鳥布蕾〉
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 應用程式介面 張智星 清大資工系.
主題五 CPU Learning Lab.
基本程式範例.
Chap. 2 變數、陣列 矩陣運算與 相關函數 方煒 台大生機系.
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
2-3 基本數位邏輯處理※.
MATLAB 程式設計入門篇 與Excel試算表的整合
在NS-2上模擬多個FTP連線,觀察頻寬的變化
MATLAB 程式設計入門篇 程式碼與記憶體之最佳化
C語言簡介 日期 : 2018/12/2.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
安裝JDK 安裝Eclipse Eclipse 中文化
Wavelet transform 指導教授:鄭仁亮 學生:曹雅婷.
邏輯關係運算 == 等於 & 且 (logical and) ~= 不等於 | 或 (logical or) < 小於
MATLAB 程式設計入門篇 初探MATLAB
第一單元 建立java 程式.
Ch20. 計算器 (Mac 版本).
INDEX 資訊學科種子教師研習 課程說明 教學活動計畫.
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 線性代數 張智星 清大資工系.
共有六個運算性質 包括它的證明以及相關題型
MATLAB 程式設計入門篇 二維平面繪圖 (part2)
4-15 WDT HT66F50.
PowerPoint 2019/4/9.
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 程式計時 張智星 清大資工系 多媒體檢索實驗室.
|08 前置處理器與標準函數.
XILINX FPGA Download Programming
張智星 清大資工系 多媒體檢索實驗室 Tree Net Construction 張智星 清大資工系.
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計 第11章 多維陣列 張智星 清大資工系.
學這些有什麼好處呢? 為了把資料作更客觀之總結描述或比較多組資料。總而言之,就是要找出一個數能代表整組數據。
撰寫MATLAB基礎財務程式 柯婷瑱.
挑戰C++程式語言 ──第8章 進一步談字元與字串
網路版盤點程式 操作說明 (使用adirace盤點前兩天庫存)
微積分 第二次上機 Matlab 教學 2007/10/30 陳逸嬿.
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
自停式向下計數器 通訊一甲 B 楊穎穆.
函數應用(二)與自定函數.
Dreamweaver 進階網頁製作 B 許天彰.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
Commando War ★★☆☆☆ 題組:Problem Set Archive with Online Judge
行銷企劃實務 第2章 行銷企劃目標.
語音訊號的特徵向量 張智星 多媒體資訊檢索實驗室 清華大學 資訊工程系.
智慧財產權管理講次36 積體電路電路布局保護法(1) 主講:吳銘圳
查表法&電腦IO Port二進制轉七段顯示器
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
張智星 台大資工系 多媒體檢索實驗室 第十三章 函數與程式碼的重複使用 張智星 台大資工系 多媒體檢索實驗室.
第四組 停車場搜尋系統 第四組 溫允中 陳欣暉 蕭積遠 李雅俐.
單元三:敘述統計 內容: * 統計量的計算 * 直方圖的繪製.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計入門篇 程式流程控制 張智星 清大資工系.
張智星 台大資工系 MIR實驗室 第23章 程式碼的重複使用 張智星 台大資工系 MIR實驗室.
Unix指令4-文字編輯與程式撰寫.
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

張智星 jang@cs.nthu.edu.tw http://www.cs.nthu.edu.tw/~jang 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 程式計時 張智星 jang@cs.nthu.edu.tw http://www.cs.nthu.edu.tw/~jang 清大資工系 多媒體檢索實驗室

1-1 整段程式碼的計時方法 碼表計時: tic 和 toc 指令,是最簡單的程式計時方法,只要將整段程式碼置於這兩個指令之中,MATLAB 就會自動計算程式執行所花費的時間 範例1-1:tictoc01.m 結果: Elapsed time is 0.886899 seconds tic % 開始計時 inv(rand(500)); % inv 指令是用來計算反矩陣 toc % 結束計時

1-1 整段程式碼的計時方法 clock: clock 指令可傳回現在的時間所形成的向量,包含 6 個元素,分別是年、月、日、時、分、秒 1-1 整段程式碼的計時方法 clock: clock 指令可傳回現在的時間所形成的向量,包含 6 個元素,分別是年、月、日、時、分、秒 例如: 執行: >> round(clock) % 傳回現在的時間,並以整數形式顯示 結果: ans = 2007 2 19 23 26 39 代表現在時間是 2007 年 2 月 19 日 23 時 26 分 39 秒

1-1 整段程式碼的計時方法 etime: etime 指令可傳回兩個時間的差值,並以秒數表示 1-1 整段程式碼的計時方法 etime: etime 指令可傳回兩個時間的差值,並以秒數表示 將 clock 和 etime 指令合併使用,就可以計算一段程式碼的執行時間 範例1-2:etime01.m 結果: elapsedTime = 0.2660 t0 = clock; % 記錄現在的時間 a = inv(rand(500)); % 執行反矩陣運算 elapsedTime = etime(clock, t0) % 計算所耗費的總時間

1-1 整段程式碼的計時方法 cputime: cputime可傳回 MATLAB 從啟動後所占用的 CPU 時間 1-1 整段程式碼的計時方法 cputime: cputime可傳回 MATLAB 從啟動後所占用的 CPU 時間 範例1-3:cputime01.m 結果: cpuTime = 0.3500 t0 = cputime; % 記錄現在的時間 a = inv(rand(500)); % 執行反矩陣運算 cpuTime = cputime-t0 % 計算 CPU 所耗費的時間

1-1 整段程式碼的計時方法 cputime: cputime 指令回傳的時間並不包含讀檔、關檔等 I/O 運算,所以其值會小於整段程式碼的實際執行時間 下面範例測試 etime 和 cputime 的差異

1-1 整段程式碼的計時方法 範例1-4:cputime02.m 1-1 整段程式碼的計時方法 範例1-4:cputime02.m 結果 : elapsedTime = 0.1810 cpuTime = 0.1700 mat = magic(50); t0 = clock; for i = 1:10; mesh(mat); end elapsedTime = etime(clock, t0) % 顯示實際經過時間 t0 = cputime; cpuTime = cputime-t0 % 顯示 CPU 佔用時間

1-2 個別函數的計時方法 程式計時器: 計時器可以分別計算每一個指令所佔用的執行時間,並列出詳細的統計表 1-2 個別函數的計時方法 程式計時器: 計時器可以分別計算每一個指令所佔用的執行時間,並列出詳細的統計表 MATLAB 計時器的指令是 profile 範例1-5:profile01.m profile on -detail mmex % 啟動計時器(只對 M/MEX 檔案進行計時) for i = 1:1000 a = inv(rand(100)); % 計算 100x100 亂數矩陣的反矩陣 b = mean(rand(100)); % 計算 100x100 亂數矩陣的每一直行平均值 end profile off % 停止計時器 profile report % 呈現計時結果

1-2 個別函數的計時方法 範例1-5:profile01.m

1-2 個別函數的計時方法 如果你點選上圖中的「mean」可以開啟下列視窗:

1-2 個別函數的計時方法 程式計時器: 欲使 profile 指令也對內建指令進行計時,可在 profile on 之後接上「-detail builtin」 範例1-6:profile02.m profile on -detail builtin % 啟動計時器,對 M/MEX 檔案及內建函式計時 for i = 1:1000 a = inv(rand(100)); % 計算 100x100 亂數矩陣的反矩陣 b = mean(rand(100)); % 計算 100x100 亂數矩陣的每一直行平均值 end profile off % 停止計時器 profile report % 呈現計時結果

1-2 個別函數的計時方法 範例1-6:profile02.m

1-2 個別函數的計時方法 若點選上圖中的任一個函式連結 ,就可以更清楚地看出每一個指令的 parent 指令(即呼叫此指令的上層指令) 和 children 指令(即被此指令所呼叫的下層指令) ,以及他們各自所佔用的時間

1-3 程式計時器的其他功能 profile('status'): profile(‘status’)可傳回計時器的狀態 1-3 程式計時器的其他功能 profile('status'): profile(‘status’)可傳回計時器的狀態 例如: >> status = profile('status') 結果: status = ProfilerStatus: 'off' DetailLevel: 'builtin‘ Timer: 'real' HistoryTracking: 'off'

1-3 程式計時器的其他功能 profile('info'): 所有的計時資訊都可由 profile('info') 傳回 1-3 程式計時器的其他功能 profile('info'): 所有的計時資訊都可由 profile('info') 傳回 例如: >> info = profile('info') 結果: info = FunctionTable: [10x1 struct] FunctionHistory: [2x0 double] ClockPrecision: 4.0000e-008 ClockSpeed: 2500 Name: 'MATLAB'

1-3 程式計時器的其他功能 如果我們要使用程式碼來抓取每一個函數的計時結果,就可以使用 profile('info') 所傳回來的物件以及 FunctionTable 的欄位來達成所需的功能

1-3 程式計時器的其他功能 取得與 inv 指令相關的計時資訊 例如: >>info.FunctionTable(2) 結果: 1-3 程式計時器的其他功能 取得與 inv 指令相關的計時資訊 例如: >>info.FunctionTable(2) 結果: ans = CompleteName: 'C:\Program Files\MATLAB71\bin\win32\numerics.dll>inv' FunctionName: 'inv' FileName: 'C:\Program Files\MATLAB71\bin\win32\numerics.dll' Type: 'Builtin-function' NumCalls: 1000 TotalTime: 1.3820 TotalRecursiveTime: 1.3820 Children: [0x1 struct] Parents: [0x1 struct] ExecutedLines: [0x4 double] IsRecursive: 0 AcceleratorMessages: {1x0 cell}

1-4 本章指令彙整 指令 功能 tic 程式碼 Toc 1-4 本章指令彙整 指令 功能 tic 程式碼 Toc tic 和 toc 指令,是最簡單的程式計時方法,只要整段程式碼置於這兩個指令之中,MATLAB 就會自動計算程式執行所花費的時間 clock 傳回現在的時間所形成的整數向量,包含六個元素,分別是年、月、日、時、分、秒 etime(t1, t2) 傳回兩個時間 t1 及 t2 的差值,並以秒數表示 cputime 傳回 MATLAB 從啟動後所占用的 CPU 時間,不包含讀檔、關檔等 I/O 運算的時間 profile on 清除舊的計時資料,並開始對各個函數(不含內建指令)進行計時 profile on –detail mmex 清除舊的計時資料,並開始對各個函數(含m 指令及mex 指令,此為預設值)進行計時

1-4 本章指令彙整 profile on –detail builtin 清除舊的計時資料,並開始對各個函數(含內建指令)進行計時 1-4 本章指令彙整 profile on –detail builtin 清除舊的計時資料,並開始對各個函數(含內建指令)進行計時 profile off 停止計時器 profile resume 啟動計時器,但保留舊的計時資料 profile clear 清除所有的計時資料 profile('reviewer') 或 profile reviewer 停止計時器,並在Profiler視窗呈現計時結果 profile('status') 或 profile status 傳回計時器的狀態 profile('info') 或 profile info 傳回所有的計時資訊 profile('report') 或 profile report