-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathall.bat
More file actions
185 lines (163 loc) · 5.7 KB
/
Copy pathall.bat
File metadata and controls
185 lines (163 loc) · 5.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
@echo off
cd /d %~dp0
chcp 65001 >nul
setlocal
rem Ves progon odnoy komandoy. Zapuskat s nomerom mashiny: all.bat Comp_1
set NAME=%~1
if "%NAME%"=="" set NAME=%COMPUTERNAME%
set OUT=Results\%NAME%
if not exist "%OUT%" mkdir "%OUT%"
echo ==========================================================
echo ChunkProof
echo Mashina: %NAME%
echo Rezultaty: %OUT%
echo ==========================================================
echo.
where dotnet >nul 2>&1
if errorlevel 1 goto nodotnet
echo [1/9] Proverka SDK .NET 8, 9 i 10
for %%V in (8 9 10) do (
dotnet --list-sdks | findstr /b "%%V." >nul
if errorlevel 1 goto nosdk
)
echo ok
echo.
echo [2/9] Build i chistka proshlogo progona
rmdir /s /q BenchmarkDotNet.Artifacts 2>nul
dotnet build -c Release > "%OUT%\build.txt" 2>&1
if errorlevel 1 goto buildfail
echo ok
echo.
echo [3/9] Sverka otvetov na treh runtaymah
for %%R in (net8.0 net9.0 net10.0) do (
dotnet run -c Release -f %%R --no-build -- checks > "%OUT%\checks-%%R.txt" 2>&1
if errorlevel 1 goto checksfail
)
echo ok
echo.
echo [4/9] Otchety blocks i threshold na treh runtaymah
for %%R in (net8.0 net9.0 net10.0) do (
dotnet run -c Release -f %%R --no-build -- blocks > "%OUT%\blocks-%%R.txt" 2>&1
dotnet run -c Release -f %%R --no-build -- threshold > "%OUT%\threshold-%%R.txt" 2>&1
)
echo ok
echo.
echo [5/9] Pamyat. Kazhdyy sposob svoim processom, chetyre razmera chanka
for %%R in (net8.0 net9.0 net10.0) do (
for %%S in (1000 10000 20000 25000) do (
call :mem %%R %%S chunkArray
call :mem %%R %%S chunkList
call :mem %%R %%S chunkEnumerable
call :mem %%R %%S chunkStrings
call :mem %%R %%S chunkHeld
call :mem %%R %%S slicesHeld
call :mem %%R %%S chunkStringsHeld
call :mem %%R %%S stringSlicesHeld
call :mem %%R %%S spanSlices
call :mem %%R %%S spanFromList
call :mem %%R %%S reusedBuffer
call :mem %%R %%S pooledBuffer
)
)
echo ok
echo.
echo [6/9] Sborki po pokoleniyam. Kazhdyy vid svoim processom
for %%R in (net8.0 net9.0 net10.0) do (
call :col %%R 21243 chunkArray
call :col %%R 21244 chunkArray
call :col %%R 25000 chunkArray
call :col %%R 10000 chunkStrings
call :col %%R 10622 chunkStrings
call :col %%R 21244 spanSlices
)
echo ok
echo.
echo [7/9] Servernyy sborshchik
set DOTNET_gcServer=1
call :mem net10.0 20000 chunkArray-srv chunkArray
call :mem net10.0 20000 chunkStrings-srv chunkStrings
call :mem net10.0 25000 chunkHeld-srv chunkHeld
call :mem net10.0 20000 chunkStringsHeld-srv chunkStringsHeld
call :col net10.0 21243 chunkArray-srv chunkArray
call :col net10.0 21244 chunkArray-srv chunkArray
set DOTNET_gcServer=
echo ok
echo.
echo [8/9] Podnyatyy porog LOH. Prichinnaya proverka: te zhe chanki vne LOH
echo Okolo soroka minut: 30 zamerov na treh runtaymah
rem Esli zamedlenie na 21244 vyzvano imenno kuchey bolshih obektov, to
rem pri poroge 0x30000 (196 608 bayt) tot zhe blok tuda ne popadaet,
rem i raznica obyazana ischeznut. Esli ne ischezla - delo ne v LOH.
set DOTNET_GCLOHThreshold=0x30000
dotnet run -c Release -f net10.0 --no-build -- threshold > "%OUT%\threshold-loh192k.txt" 2>&1
dotnet run -c Release -f net10.0 --no-build -- blocks > "%OUT%\blocks-loh192k.txt" 2>&1
call :mem net10.0 25000 chunkHeld-loh192k chunkHeld
call :mem net10.0 20000 chunkStringsHeld-loh192k chunkStringsHeld
call :col net10.0 21243 chunkArray-loh192k chunkArray
call :col net10.0 21244 chunkArray-loh192k chunkArray
call :col net10.0 25000 chunkArray-loh192k chunkArray
call :col net10.0 10622 chunkStrings-loh192k chunkStrings
rmdir /s /q BenchmarkDotNet.Artifacts 2>nul
dotnet run -c Release -f net10.0 --no-build -- --filter *ChunkValueBench* *ChunkHeldBench*
if errorlevel 1 goto causefail
if exist BenchmarkDotNet.Artifacts\results (
if not exist "%OUT%\bench-loh192k" mkdir "%OUT%\bench-loh192k"
xcopy /y /q BenchmarkDotNet.Artifacts\results\*.* "%OUT%\bench-loh192k\" > nul
)
set DOTNET_GCLOHThreshold=
echo ok
echo.
echo [9/9] Zamery. Okolo dvuh s polovinoy chasov, 7 klassov, 166 zamerov
rmdir /s /q BenchmarkDotNet.Artifacts 2>nul
dotnet run -c Release -f net10.0 --no-build
if errorlevel 1 goto benchfail
if exist BenchmarkDotNet.Artifacts\results (
if not exist "%OUT%\bench" mkdir "%OUT%\bench"
xcopy /y /q BenchmarkDotNet.Artifacts\results\*.* "%OUT%\bench\" > nul
copy /y BenchmarkDotNet.Artifacts\*.log "%OUT%\bench\" > nul 2>&1
)
dotnet --info > "%OUT%\environment.txt" 2>&1
powershell -NoProfile -Command "Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors | Format-List" >> "%OUT%\environment.txt" 2>&1
powershell -NoProfile -Command "'RAM bytes: ' + (Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory" >> "%OUT%\environment.txt" 2>&1
echo ok
echo.
echo Gotovo. Vsyo lezhit v %OUT%
pause
exit /b 0
:mem
rem %1 - runtime, %2 - razmer chanka, %3 - imya fayla, %4 - vid.
rem Esli %4 pust, imya fayla i vid sovpadayut.
set KIND=%4
if "%KIND%"=="" set KIND=%3
dotnet run -c Release -f %1 --no-build -- memory %KIND% %2 > "%OUT%\memory-%1-%2-%3.txt" 2>&1
exit /b 0
:col
rem %1 - runtime, %2 - razmer chanka, %3 - imya fayla, %4 - vid.
set KIND=%4
if "%KIND%"=="" set KIND=%3
dotnet run -c Release -f %1 --no-build -- collect %KIND% %2 > "%OUT%\collect-%1-%2-%3.txt" 2>&1
exit /b 0
:nodotnet
echo DOTNET NE NAYDEN. Ustanovit SDK .NET 8, 9 i 10.
pause
exit /b 1
:nosdk
echo NE HVATAET SDK. Nuzhny .NET 8, 9 i 10. Proverit: dotnet --list-sdks
pause
exit /b 1
:buildfail
echo BUILD NE PROSHEL. Smotret %OUT%\build.txt
pause
exit /b 1
:checksfail
echo SVERKA OTVETOV NE PROSHLA. Smotret %OUT%\checks-*.txt
pause
exit /b 1
:causefail
echo PRICHINNAYA PROVERKA NE PROSHLA. Bez neyo vyvod pro LOH nedokazan.
pause
exit /b 1
:benchfail
echo ZAMERY NE PROSHLI.
pause
exit /b 1