第1个回答 2011-10-03
我答过一个提问求程序运行平均值的,但没那高的精度,其实程序每次运行时间也不等的,如果象楼上说的要检测进程来测,那就更不精确了,只能从批处理启动要测的程序退出自动返回才可能准一点,附上用检测20次ping用时的代码,如果可行,把那ping的那行换成start /wait 你的程序:
@echo off&setlocal enabledelayedexpansion
set nu=20
echo/&echo 测试中。。。
for /L %%i in (1,1,%nu%)do (
title . 第 %%i 次
set tb=!time!
ping -n 1 -w 800 9 >nul
set te=!time!
call :cout cb !tb!
call :cout ce !te!
set/a "c=(6000+ce-cb)%%6000"
set c%%i=!c!
set cc=!c!
set cc=!c:~,-2!.!c:~-2!
if !c! lss 10 set cc=0.0!c!
if "!cc:~,1!"=="." set cc=0!cc!
set "cc=!cc! "
set t%%i=!tb! ~ !te! == !cc:~,7!s
)
(echo %date:~,10% ping延时测试:&echo/)>test.txt
for /L %%i in (1,1,%nu%)do (
echo %%i !t%%i!>>test.txt
set/a tot+=c%%i)
set/a av=(tot*10/nu+5)/10
set avs=%av:~,-2%.%av:~-2%
if !av! lss 10 set avs=0.0!av!
if "!avs:~,1!"=="." set avs=0!avs!
(echo/&echo %nu% 次平均用时: %avs% s)>>test.txt
title . OK
echo/&echo %nu% 次平均用时: %avs% s
endlocal
echo/&pause
start test.txt
goto :eof
:cout
for /f "tokens=2-4 delims=:. " %%a in ("%2")do (
set/a "%1=(1%%a-100)*6000+1%%b%%c-10000")