作者tropical72 (藍影)
站內Programming
標題Re: [問題][batch]如何計算一個程式執行的時間?
時間Wed Sep 21 02:56:05 2011
※ 引述《antirazin (~ SNSD & KARA ~ )》之銘言:
: 上網找了很多但都沒有好的解法
: 所以想請教板友都是怎麼計時的?
: 希望執行起來像下面這樣:(假設bat檔名為mtime)
: C:>mtime dir C: /s
: Execution time: 00:05:03:45
: 之類的
: 麻煩各位了,謝謝~
網路怪怪的,internet 一直上不去,沒辦法 po code,下面參考一下
----
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
:: 取得參數指令
SET "INSTR="
FOR %%I IN (%*) DO (
SET "INSTR=!INSTR!%%I "
)
:: 取得開始時間
SET A=%TIME%
:: 開始執行程式
%INSTR%
:: 取得結束時間
SET B=%TIME%
:: 取得時間詳細資料
SET A_HOUR=%A:~0,2%
SET A_MINS=%A:~3,2%
SET A_SECS=%A:~6,2%
SET A_MSEC=%A:~9,2%
SET B_HOUR=%B:~0,2%
SET B_MINS=%B:~3,2%
SET B_SECS=%B:~6,2%
SET B_MSEC=%B:~9,2%
:: FOR debug
echo.
echo START TIME:%A%
echo END TIME:%B%
:: echo %A_HOUR%:%A_MINS%:%A_SECS%.%A_MSEC%
:: echo %B_HOUR%:%B_MINS%:%B_SECS%.%B_MSEC%
:: 計算耗時
SET /A C_MSEC=B_MSEC-A_MSEC
SET /A C_SECS=B_SECS-A_SECS
SET /A C_MINS=B_MINS-A_MINS
SET /A C_HOUR=B_HOUR-A_HOUR
:: 調整數值
IF %C_MSEC% LSS 0 SET /A C_MSEC+=100 & SET /A C_SECS-=1
IF %C_MSEC% LSS 10 SET C_MSEC=0%C_MSEC%
IF %C_SECS% LSS 0 SET /A C_SECS+=60 & SET /A C_MINS-=1
IF %C_SECS% LSS 10 SET C_SECS=0%C_SECS%
IF %C_MINS% LSS 0 SET /A C_MINS+=60 & SET /A C_HOUR-=1
IF %C_MINS% LSS 10 SET C_MINS=0%C_MINS%
IF %C_HOUR% LSS 0 SET /A C_HOUR+=24
IF %C_HOUR% LSS 10 SET C_HOUR=0%C_HOUR%
echo ELAPSE :%C_HOUR%:%C_MINS%:%C_SECS%.%C_MSEC%
ENDLOCAL
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.78.41
→ tropical72:補一下,耗時精度確實有待商議. 180.177.78.41 09/21 02:58
→ priv:如果只需要取到秒的話倒是無所謂.. 140.113.23.102 09/21 10:13
取到秒是真的無所謂,只是沒研究算出來的 .xx 效果如何。
※ 編輯: tropical72 來自: 180.177.78.41 (09/21 11:46)
推 vencin1987:另外寫AP去執行console程式應該較好 114.42.245.27 09/25 03:15
→ tropical72:耶..這是額外的 bat 沒錯,拿來測其它 180.177.78.41 09/25 03:38
→ tropical72:console 下執行的結果. 180.177.78.41 09/25 03:38
→ tropical72:若要額外包成.exe,差別只在計時器吧 ? 180.177.78.41 09/25 03:39
→ MOONRAKER:要考慮console程式呼叫shell的時間。 61.228.240.149 09/25 20:05
→ MOONRAKER:不過現在不是問題,以前DOS 3時期偶爾會 61.228.240.149 09/25 20:06
→ MOONRAKER:很慢。 61.228.240.149 09/25 20:06
→ tropical72:謝謝M大,請教,依原po之要求,呼叫之時間 180.177.78.41 09/25 21:00
→ tropical72:應屬無可避免吧?或,不同程式語言,在呼 180.177.78.41 09/25 21:00
→ tropical72:叫時所佔用時間亦不同? 180.177.78.41 09/25 21:01
→ MOONRAKER:我也不知道,不過以前因為有注意到這點 59.120.49.163 09/27 12:58
→ MOONRAKER:我認為用batch計算會比較準,當然那是 59.120.49.163 09/27 12:58
→ MOONRAKER:很久以前了 59.120.49.163 09/27 12:59
→ tropical72:謝謝 M 大經驗上的分享 *^_^* 180.177.78.41 09/27 18:48