張智星 jang@mirlab.org http://mirlab.org/jang 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 程式計時 張智星 jang@mirlab.org http://mirlab.org/jang 清大資工系 多媒體檢索實驗室.

Slides:



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

国家税务总局关于修改企业所得税年度纳税申报表( A 类, 2014 年版) 部分申报表的公告(国家税务总局公告 2016 年第 3 号) 一、对《企业基础信息表》( A )及填报说明修改如下: (一) “107 从事国家非限制和禁止行业 ” 修改为 “107 从事国家限制或禁止行业 ”
2014 年 12 月 企业所得税年度纳税申报表 (A 类, 2014 版 ) 辅导材料(二) A 企业基础信息 A 主表.
第 3 章操作系统基础 3.1 操作系统概述 3.2 操作系统的功能模块 3.3 典型操作系统概述.
第 5 章 中國的都市.
第六讲 MATLAB 语言程序设计 6.1 MATLAB语言的函数的基本结构 6.2 全局、局部变量、子函数与私有目录
景观水池渗漏的研究 年级专业:12级土木工程 指导教师: ××× 教 学 点: ××××教学点 新疆工程学院继续教育学院 20 年 月 日
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 程式計時 張智星 清大資工系.
计算机硬件设备图片 go 珠海市第四中学 信息技术组.
工程定额与计价方法 教材名称:工程建设定额原理与实务
建设工程施工管理 模拟卷 一、单项选择题 1.下列选项中,除( )以外都属于施工机械使用费。 A.购置费 B.安拆费及场外运费 C.折旧费 D.修理费.
切削刀具之 幾何形狀和加工參數 對中碳鋼表面粗糙度的影響
阳光工程引导性培训 宁夏自治区盐池县农广校
中五級中史科及通識科跨科研習 研習大澳的「宗教文化」─ 廟宇的研習 指導老師:周婉儀老師 組員: 陳偉欽 5a (15)
《毛泽东思想和中国特色社会主义体系概论》 第一章马克思主义中国化两大理论成果
类风湿性关节炎的中医治疗 广州中医药大学第一附属医院 陈纪藩.
引導者的角色 組別:第5組 4A1I0003 劉芷媛 4A1I0004 陳安琪 4A1I0014 陳佳瑩 4A1I0046 葉倢茹
2010年春季开学学校食堂食品安全知识培训 徐汇区食品药品监督所
进出口食品检验监管 基础讲课内容 我国进出口食品安全管理体系介绍 法律法规 进口食品的检验检疫 出口食品的检验检疫.
2-何鍇卉 14-曹凱茹 19-陳亮妤 21-陳思瑜 37-蔡庭瑜 39-賴俞亨 40賴思恩
授课班级 安全技术管理0605班 第 5 次 课 授课时间 2008年3月10日 星期一 授课地点 科技楼401多媒体教室 课题内容:
一种权衡风险收益的推荐方法 北京大学 作者:王卓 主讲人:邱镇.
大学计算机基础.
2015版《中国地震动参数区划图》 对我市城乡建设的影响
第二章 项目一:企业厂区与车间平面设计 1.
總務處營繕組簡報 1.業務職掌 2.九十四年度工作績效 3.工程一覽 4.歷年工作成果 5.未來展望 6.困難及建議.
您買美元了嗎? 退休規劃 全球外幣保單.
前言 1.课程安排: 第一章 操作系统引论(7学时) 第二章 进程管理(14学时) 第三章 处理机调度与死锁(10学时)
2014年企业所得税汇算清缴相关税收政策 新华区地方税务局 卿继红
M340可编程控制器技术培训课程 -编程软件篇.
第2章:企業組織 張緯良 世新大學資訊管理系.
台灣廢物物處理機構 邱騰煥 8 號.
古文閱讀 – 像虎伏獸 明 劉基 組員: 5號江依倫 6號江若薇 12號張珉芫 32號蔡燕如.
第十章 季节施工 ——冬期施工准备.
危险废物环境管理情况 河南省固体废物管理中心  韩晓晗 2007年6月6日.
第8章 机床操作 主讲:臧红彬 博士.
食品添加剂生产许可审查通则起草说明.
2006年台灣醫學中心大搜查 聰明病人 完全就醫指南.
概述 检索图书的检索工具 检索期刊的检索工具 检索特种文献的检索工具
法 师 带 观 修 互 动 答 题 法 师 答 疑. 法 师 带 观 修 互 动 答 题 法 师 答 疑.
餐饮服务从业人员 食品安全知识培训 孔莉 朔州市食品药品监督管理局.
首次数据采集填报说明 内蒙古自治区校车信息管理系统 靳 丽 内蒙古自治区教育信息中心 2013年5月
我的心得報告 經過篩選,挑中我們 十多位學生由學校推薦進入公司,開始他們的學習之旅 學習的過程中有想像不到的意外驚喜
性別透視鏡 鳳鳴電台 高宜君老師.
治超新政相关文件解读 厅执法局 江涛 二零一六年九月.
Chapter 13 輸入/輸出系統 (I/O Systems)
國語文好點子趴辣客教學食譜 甜點:〈焦糖鳥布蕾〉
國賓飯店儲備幹部訓練 工業組織與管理-個案Report 組員: T 王佑靜 T 張秀蓮 T 邱佳微
也許你很疑惑: 最近升官的同事,專業能力又沒你強! 情場得意的朋友,長的又沒你帥或美! 小曹要交新朋友,為什麼就是比較簡單!
第七讲 matlab的程序设计 —— matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。
Windows XP 使用與設定 (進階班) 淡江大學資訊中心教學支援組 劉育辰.
三大思考工具,輕鬆 徹底解決各種問題.
MATLAB 程式設計入門篇 程式碼與記憶體之最佳化
詩文的形成 有意義的字詞 句子 段落 一首詩文的形成,是由有意義的字詞組成句子,再由句子組成段落。
校 園 雲端輸出管理系統 新印科技股份有限公司 聯絡人:伍宏一 電 話: /
邏輯關係運算 == 等於 & 且 (logical and) ~= 不等於 | 或 (logical or) < 小於
MATLAB 程式設計入門篇 初探MATLAB
认识计算机系统.
第2章 MATLAB程序设计 编者.
共有六個運算性質 包括它的證明以及相關題型
MATLAB 程式設計入門篇 初探MATLAB
學這些有什麼好處呢? 為了把資料作更客觀之總結描述或比較多組資料。總而言之,就是要找出一個數能代表整組數據。
微机原理与接口技术 ——第三章 80x86微处理器 西安邮电大学 计算机学院 范琳.
MATLAB 程式設計入門篇 初探MATLAB
機械製造期末報告- 加工切削 組員:高德全4A 林威成4A 陳柏源4A
第一章 操作系统引论 1.1 操作系统的目标和作用 1.2 操作系统的发展过程 1.3 操作系统的基本特性 1.4 操作系统的主要功能
行銷企劃實務 第2章 行銷企劃目標.
MATLAB 实用教程.
智慧財產權管理講次36 積體電路電路布局保護法(1) 主講:吳銘圳
参赛流程指引 (如何下载平台及报名参赛).
Presentation transcript:

張智星 jang@mirlab.org http://mirlab.org/jang 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 程式計時 張智星 jang@mirlab.org http://mirlab.org/jang 清大資工系 多媒體檢索實驗室

1-1 整段程式碼的計時方法 相關指令 本章範例之執行環境 tic & toc clock & etime cputime 1-1 整段程式碼的計時方法 相關指令 tic & toc clock & etime cputime 本章範例之執行環境 OS: Windows 7 CPU: Intel Core i7-2670QM, 2.20GHz RAM: 8GB MATLAB: 7.12.0.635 (R2011a)

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

多個碼表計時:tic & toc 多個碼表計時: 需指定馬表(或計時器)如下 範例:tictoc02.m timer=tic; … time=toc(timer); 範例:tictoc02.m timer1=tic; % 馬表一開始計時 n=100*(1:10); for i=1:length(n) timer2=tic; % 馬表二開始計時 z=inv(rand(n(i))); % inv 指令是用來計算反矩陣 time(i)=toc(timer2); % 馬表二停止計時 end fprintf('Overall time = %f sec\n', toc(timer1)); % 馬表一停止計時 plot(n, time, '.-');

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

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

cputime 指令 cputime: cputime可傳回 MATLAB 從啟動後所占用的 CPU 時間 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.0400 cpuTime = 0.0312 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