Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Пользователь


Сообщения: 122
Благодарности: 6

Профиль | Отправить PM | Цитировать


эх написал сам как мог, тест взят на основе 7zip т.к он установлен на всех компьютерах в сети.
Функцию :count взял из гугла, на некоторых компьютерах не правильно срабатывает но на 80% работает и ладно

описание лога бенча 7zip обязательно нужно прочесть тут: http://7zip.bugaco.com/7zip/MANUAL/c...V3tFsHWVtNJ6TF
(есть недокументированная фича когда тест вылетает с выводом что не смог выделить память, в отчете заметно не вооруженным глазом)

скрипт закидывается на удаленный комп через psexec или логон скрипт, дополнительная информация, после выполнения сохраняется на удаленной машине(или сервер отчетов), так что путь до нее необходимо поменять(set "remotelog для полноты картины добавил дополнительные поля, т.к производительность очень сильно зависит от памяти и от ядер процессора.



Код: Выделить весь код
@echo off
setlocal
set app="c:\program files\7-Zip\7z.exe"
if not exist c:\temp md c:\temp
set log="c:\temp\bech.txt"
if exist %log% del /f /q %log%
set "remotelog=\\YOUR_PC_HOSTNAME\d$\bench_%~n0.txt"

echo %computername%
call :getmodel
echo %model%
call :failed
call :benching
call :logwork
call :count

echo %computername%	%model%	%cpu%	%ramsize%	%ramusage%	%spendTime%	%benched%	%errors% >> %remotelog%

endlocal
exit 0

:failed
if not exist %app% (
echo %computername%	%model%	not exist %app% >> %remotelog%
exit 1
)
exit /b

:benching
set "starttime=%time%"
echo %starttime%
%app% b 1 -md26	>%log%
set "errors=%errorlevel%"
set "endtime=%time%"
echo %endtime%
exit /b

:getmodel
for /f "tokens=1,2 skip=1 delims= " %%i in ('wmic csproduct get name') do set model=%%i %%j&exit /b
exit /b

:logwork
for /f "tokens=3 delims= " %%a in ('type %log% ^| findstr/i c:"RAM size:"') do set "ramsize=%%a MB"
for /f "tokens=3 delims= " %%a in ('type %log% ^| findstr/i "RAM size:"') do set "ramusage=%%a MB"
for /f "tokens=3 delims=:" %%a in ('type %log% ^| findstr/i "CPU hardware threads:"') do set "cpu=%%a"
for /f "tokens=2,3,4 delims= " %%a in ('type %log% ^| findstr/i "tot:"') do set "benched=%%a	%%b	%%c"
REM Dict        Compressing          |        Decompressing
      REM Speed Usage    R/U Rating  |    Speed Usage    R/U Rating
       REM KB/s     %   MIPS   MIPS  |     KB/s     %   MIPS   MIPS

REM 22:   13684   334   3990  13312  |   177800   395   4059  16042
REM 23:   14296   346   4212  14566  |   170129   390   3989  15568
REM 24:   14646   343   4589  15747  |   170093   396   3984  15780
REM 25:   13319   354   4290  15207  |   165123   388   3998  15528
REM 26:   11319   354   3901  13793  |   162527   390   3971  15485
REM ----------------------------------------------------------------
REM Avr:          346   4197  14525               392   4000  15681
REM Tot:          369   4098  15103
exit /b

:count 
SET T1=%starttime%
SET T2=%endtime%
    ::--------------- РАЗБИЕНИЕ МЕТОК ВРЕМЕНИ НА РАЗРЯДЫ [hh,mm,ss] -------------
for /f "tokens=1,2,3 delims=;:,." %%a in ("%T1%") do (set h1=%%a & set m1=%%b & set s1=%%c)
for /f "tokens=1,2,3 delims=;:,." %%a in ("%T2%") do (set h2=%%a & set m2=%%b & set s2=%%c)
    ::--------------- СЕРИАЛИЗАЦИЯ -------------
set /a time1 = (h1*3600)+(m1*60)+(s1)
set /a time2 = (h2*3600)+(m2*60)+(s2)
    ::--------------- ВЫЧИСЛЕНИЕ -------------
set /a time3=time2-time1
if /i %time3% lss 0 set /a time3=time2+(86400-time1)
    ::--------------- ДЕСЕРИАЛИЗАЦИЯ [muchSS -> hh,mm,ss] -------------
::hour
set /a H = time3/3600
set /a time3 = time3-(H*3600)
::minute
set /a M = time3/60
set /a time3=time3-(M*60)
::second
set /a S = time3
    ::--------------- CHECKING VALUES -------------
 CALL :CheckNum %H%,H
 CALL :CheckNum %M%,M
 CALL :CheckNum %S%,S
 
set spendTime=%H%:%M%:%S%
::show result
echo ______________________________

EXIT /B
======================
:CheckNum (varIN,varOUT)
set /A temp = %1
if "%temp:~1,1%"=="" (SET %2=0%temp%)
EXIT /B
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:19, 28-10-2015 | #9