-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathall.bat
More file actions
117 lines (102 loc) · 4.64 KB
/
Copy pathall.bat
File metadata and controls
117 lines (102 loc) · 4.64 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
@echo off
cd /d %~dp0
setlocal
rem Polnyy progon. Odna komanda, dalshe nichego delat ne nado.
rem
rem Otchety snimayutsya dvazhdy: na workstation GC i na server GC.
rem Prod chashche vsego rabotaet na server GC, i esli ne pokazat oba,
rem pervyy zhe vopros budet "a na servernom sborshchike tak zhe".
set NAME=%~1
if "%NAME%"=="" set NAME=%COMPUTERNAME%
set OUT=Results\%NAME%
if not exist "%OUT%" mkdir "%OUT%"
echo Mashina: %NAME%
echo Rezultaty: %OUT%
echo.
echo [1/6] Build i chistka proshlogo progona
rem Bez chistki otchety proshlogo progona ostanutsya ryadom s novymi:
rem BenchmarkDotNet perezapisyvaet fayly po imenam klassov, i to, chto
rem pereimenovali ili ubrali, ostalos by ot proshlogo raza.
if exist BenchmarkDotNet.Artifacts rd /s /q BenchmarkDotNet.Artifacts
del /q reports-*.txt extra-*.txt loh-*.txt seq-*.txt copy-*.txt 2>nul
dotnet build -c Release
if errorlevel 1 goto fail
echo.
echo [2/6] Otchety, workstation GC, tri runtajma
set DOTNET_gcServer=0
call :reports ws net8.0 net8
call :reports ws net9.0 net9
call :reports ws net10.0 net10
echo.
echo [3/6] Otchety, server GC, tri runtajma
set DOTNET_gcServer=1
call :reports srv net8.0 net8
call :reports srv net9.0 net9
call :reports srv net10.0 net10
set DOTNET_gcServer=
rem Porog kuchi bolshih objektov nastraivaetsya. Peremennaya nazyvaetsya
rem DOTNET_GCLOHThreshold, znachenie v hex. 0x30000 - eto 196 608, vyshe
rem bucketa 131 072. Otchet extra sam pokazhet, primenilos li: esli granica
rem ostalas 84 976, znachit peremennaya ne podhvatilas.
echo.
echo [3b] Otchet extra i copy pri podnyatom poroge LOH
set DOTNET_GCLOHThreshold=0x30000
dotnet run -c Release -f net10.0 --no-build -- extra > extra-loh196k.txt 2>&1
dotnet run -c Release -f net10.0 --no-build -- copy file > copy-loh196k.txt 2>&1
dotnet run -c Release -f net10.0 --no-build -- seq > seq-loh196k.txt 2>&1
set DOTNET_GCLOHThreshold=
echo.
echo [4/6] Zamery. Eto dolgiy shag.
echo Mashinu vo vremya progona luchshe ne trogat.
echo Start: %TIME%
dotnet run -c Release -f net10.0 --no-build
echo Finish: %TIME%
echo.
echo [5/6] Sbor rezultatov v %OUT%
rem Otchety konsoli pishutsya v CP866: bez perekodirovki oni na GitHub
rem pokazyvayutsya krakozyabrami. PowerShell perechityvaet ih v UTF-8.
move /y reports-*.txt "%OUT%\" > nul 2>&1
move /y extra-*.txt "%OUT%\" > nul 2>&1
move /y loh-*.txt "%OUT%\" > nul 2>&1
move /y seq-*.txt "%OUT%\" > nul 2>&1
move /y copy-*.txt "%OUT%\" > nul 2>&1
rem Konsol na raznyh mashinah pishet po-raznomu: gde-to CP866, gde-to uzhe
rem UTF-8. Bezuslovnaya perekodirovka lomala by vtoroy sluchay, poetomu
rem snachala probuem prochitat fayl kak strogiy UTF-8 i trogaem tolko te,
rem gde eto ne vyshlo.
powershell -NoProfile -Command "$u=New-Object Text.UTF8Encoding $false,$true; Get-ChildItem '%OUT%\*.txt' | ForEach-Object { $b=[IO.File]::ReadAllBytes($_.FullName); try { [void]$u.GetString($b) } catch { [IO.File]::WriteAllText($_.FullName, [Text.Encoding]::GetEncoding(866).GetString($b), (New-Object Text.UTF8Encoding $false)) } }"
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
)
echo ok
echo [6/6] Gotovo. Vsyo lezhit v %OUT%
echo Upakovat etu papku i otpravit.
pause
exit /b 0
rem ------------------------------------------------------------------
rem Kazhdyy otchet - otdelnyy protsess: vse oni rabotayut s obshchim pulom
rem i v odnom protsesse meshali by drug drugu.
rem ------------------------------------------------------------------
:reports
rem %1 - sborshchik (ws ili srv), %2 - target framework, %3 - suffiks fayla.
set GC=%1
set TFM=%2
set RT=%3
dotnet run -c Release -f %TFM% --no-build -- reports > reports-%RT%-%GC%.txt 2>&1
dotnet run -c Release -f %TFM% --no-build -- extra > extra-%RT%-%GC%.txt 2>&1
dotnet run -c Release -f %TFM% --no-build -- loh 16 > loh-%RT%-%GC%.txt 2>&1
dotnet run -c Release -f %TFM% --no-build -- loh 32 >> loh-%RT%-%GC%.txt 2>&1
dotnet run -c Release -f %TFM% --no-build -- loh 64 >> loh-%RT%-%GC%.txt 2>&1
dotnet run -c Release -f %TFM% --no-build -- seq > seq-%RT%-%GC%.txt 2>&1
dotnet run -c Release -f %TFM% --no-build -- copy memory > copy-%RT%-%GC%.txt 2>&1
dotnet run -c Release -f %TFM% --no-build -- copy sub >> copy-%RT%-%GC%.txt 2>&1
dotnet run -c Release -f %TFM% --no-build -- copy buffer >> copy-%RT%-%GC%.txt 2>&1
dotnet run -c Release -f %TFM% --no-build -- copy file >> copy-%RT%-%GC%.txt 2>&1
dotnet run -c Release -f %TFM% --no-build -- copy async >> copy-%RT%-%GC%.txt 2>&1
exit /b 0
:fail
echo BUILD FAILED
pause
exit /b 1