-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathRun-Benchmarks.ps1
More file actions
85 lines (64 loc) · 2.16 KB
/
Run-Benchmarks.ps1
File metadata and controls
85 lines (64 loc) · 2.16 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
<#
.SYNOPSIS
Runs performance benchmarks for PanoramicData.OData.Client.
.DESCRIPTION
This script runs BenchmarkDotNet benchmarks in Release mode with profiling.
Results are exported to the BenchmarkDotNet.Artifacts folder.
.PARAMETER Filter
Filter expression for running specific benchmarks (e.g., "*QueryBuilder*")
.PARAMETER Quick
Run quick benchmarks (fewer iterations for faster feedback)
.PARAMETER Profile
Enable detailed CPU profiling (Windows only, requires admin)
.EXAMPLE
.\Run-Benchmarks.ps1
.EXAMPLE
.\Run-Benchmarks.ps1 -Filter "*QueryBuilder*"
.EXAMPLE
.\Run-Benchmarks.ps1 -Quick
#>
param(
[string]$Filter = "*",
[switch]$Quick,
[switch]$Profile
)
$ErrorActionPreference = 'Stop'
$solutionRoot = $PSScriptRoot
$testProject = Join-Path $solutionRoot "PanoramicData.OData.Client.Test\PanoramicData.OData.Client.Test.csproj"
Write-Host "========================================" -ForegroundColor Magenta
Write-Host " PanoramicData.OData.Client Benchmarks" -ForegroundColor Magenta
Write-Host "========================================" -ForegroundColor Magenta
# Build in Release mode
Write-Host "`n>> Building in Release mode..." -ForegroundColor Yellow
dotnet build $testProject --configuration Release --verbosity minimal
if ($LASTEXITCODE -ne 0) {
Write-Host "Build failed!" -ForegroundColor Red
exit 1
}
Write-Host "`n>> Running benchmarks..." -ForegroundColor Yellow
# Construct the benchmark command
$benchmarkArgs = @(
"run",
"--project", $testProject,
"--configuration", "Release",
"--no-build",
"--",
"--filter", $Filter
)
if ($Quick) {
$benchmarkArgs += "--job", "short"
}
if ($Profile) {
$benchmarkArgs += "--profiler", "ETW"
}
# Run benchmarks
& dotnet $benchmarkArgs
if ($LASTEXITCODE -ne 0) {
Write-Host "`nBenchmark run failed!" -ForegroundColor Red
exit 1
}
Write-Host "`n========================================" -ForegroundColor Green
Write-Host " Benchmarks completed!" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green
Write-Host "`nResults are in: BenchmarkDotNet.Artifacts\" -ForegroundColor Cyan
exit 0