Add image processing benchmarks and UI folder open buttons
- Added MaddoShared.Benchmarks project with BenchmarkDotNet for comprehensive image processing performance tests (parallel, chunk, size, stress). - Included helper for generating test images and custom configs to ensure InProcess toolchain for .NET Windows compatibility. - Added cross-platform scripts to run benchmarks easily. - Updated .gitignore for benchmark artifacts and temp files. - Exposed GetFilesToProcessPublic in ImageCreationStuff for testability. - Added file name sanitization in ImageCreatorSharp to prevent IO errors. - Enhanced WinForms UI: added "Open" buttons for source/destination folders, handled folder opening in Explorer, and improved user messaging and layout. - Updated solution file to include new benchmark project.
This commit is contained in:
parent
39b0904a72
commit
c2fd4bf780
17 changed files with 1608 additions and 301 deletions
124
run-benchmarks.ps1
Normal file
124
run-benchmarks.ps1
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
# Image Processing Benchmark Runner
|
||||
# This script provides easy access to common benchmark scenarios
|
||||
|
||||
param(
|
||||
[Parameter(Position=0)]
|
||||
[ValidateSet("all", "quick", "parallel", "chunks", "sizes", "stress", "help")]
|
||||
[string]$Scenario = "help",
|
||||
|
||||
[switch]$Fast,
|
||||
[switch]$DetailedOutput
|
||||
)
|
||||
|
||||
$projectPath = "MaddoShared.Benchmarks"
|
||||
|
||||
function Show-Help {
|
||||
Write-Host @"
|
||||
Image Processing Benchmark Runner
|
||||
==================================
|
||||
|
||||
Usage: .\run-benchmarks.ps1 [scenario] [-Fast] [-DetailedOutput]
|
||||
|
||||
Scenarios:
|
||||
all - Run all benchmarks (60-120 minutes)
|
||||
quick - Fast test run for development (5-10 minutes)
|
||||
parallel - Test parallel processing strategies (20-30 minutes)
|
||||
chunks - Optimize chunk size (20-30 minutes)
|
||||
sizes - Test different image sizes (45-90 minutes)
|
||||
stress - Large-scale stress test (2-4 hours)
|
||||
help - Show this help message
|
||||
|
||||
Flags:
|
||||
-Fast - Use dry run for faster but less accurate results
|
||||
-DetailedOutput - Show detailed output
|
||||
|
||||
Examples:
|
||||
.\run-benchmarks.ps1 quick
|
||||
.\run-benchmarks.ps1 parallel -Fast
|
||||
.\run-benchmarks.ps1 stress -DetailedOutput
|
||||
|
||||
Results will be saved to: MaddoShared.Benchmarks\BenchmarkDotNet.Artifacts\results\
|
||||
"@
|
||||
}
|
||||
|
||||
function Run-Benchmark {
|
||||
param(
|
||||
[string]$Filter,
|
||||
[string]$Description
|
||||
)
|
||||
|
||||
Write-Host "`n========================================" -ForegroundColor Cyan
|
||||
Write-Host " $Description" -ForegroundColor Cyan
|
||||
Write-Host "========================================`n" -ForegroundColor Cyan
|
||||
|
||||
$args = @("-c", "Release")
|
||||
|
||||
if ($Filter) {
|
||||
$args += @("--", "--filter", $Filter)
|
||||
}
|
||||
|
||||
# Note: We don't pass --job arguments anymore because they override
|
||||
# the InProcess toolchain configuration needed for Windows compatibility
|
||||
if ($Fast) {
|
||||
Write-Host "Note: Fast mode (-Fast) requested but not using --job dry" -ForegroundColor Yellow
|
||||
Write-Host "Reason: --job arguments override InProcess toolchain config" -ForegroundColor Yellow
|
||||
Write-Host "The benchmark will run with the default InProcessConfig settings.`n" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
if ($DetailedOutput) {
|
||||
$args += "--verbosity", "detailed"
|
||||
}
|
||||
|
||||
Push-Location $projectPath
|
||||
try {
|
||||
dotnet run @args
|
||||
}
|
||||
finally {
|
||||
Pop-Location
|
||||
}
|
||||
}
|
||||
|
||||
# Main execution
|
||||
switch ($Scenario) {
|
||||
"help" {
|
||||
Show-Help
|
||||
}
|
||||
|
||||
"all" {
|
||||
Write-Host "Running ALL benchmarks..." -ForegroundColor Yellow
|
||||
Write-Host "This will take 60-120 minutes. Press Ctrl+C to cancel.`n" -ForegroundColor Yellow
|
||||
Start-Sleep -Seconds 3
|
||||
Run-Benchmark "" "All Benchmarks"
|
||||
}
|
||||
|
||||
"quick" {
|
||||
Write-Host "Running QUICK test..." -ForegroundColor Green
|
||||
Run-Benchmark "*ImageProcessingBenchmarks*" "Quick Development Test"
|
||||
}
|
||||
|
||||
"parallel" {
|
||||
Write-Host "Running PARALLEL processing benchmarks..." -ForegroundColor Green
|
||||
Run-Benchmark "*ImageProcessingBenchmarks*" "Parallel Processing Strategies"
|
||||
}
|
||||
|
||||
"chunks" {
|
||||
Write-Host "Running CHUNK SIZE optimization..." -ForegroundColor Green
|
||||
Run-Benchmark "*ChunkSizeBenchmarks*" "Chunk Size Optimization"
|
||||
}
|
||||
|
||||
"sizes" {
|
||||
Write-Host "Running IMAGE SIZE comparison..." -ForegroundColor Green
|
||||
Run-Benchmark "*ImageSizeBenchmarks*" "Image Size Impact Analysis"
|
||||
}
|
||||
|
||||
"stress" {
|
||||
Write-Host "Running STRESS TEST..." -ForegroundColor Red
|
||||
Write-Host "WARNING: This will take 2-4 hours and use significant disk space!" -ForegroundColor Red
|
||||
Write-Host "Press Ctrl+C within 5 seconds to cancel...`n" -ForegroundColor Red
|
||||
Start-Sleep -Seconds 5
|
||||
Run-Benchmark "*StressTestBenchmark*" "Large-Scale Stress Test"
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "`nBenchmark execution complete!" -ForegroundColor Green
|
||||
Write-Host "Results saved to: $projectPath\BenchmarkDotNet.Artifacts\results\" -ForegroundColor Green
|
||||
Loading…
Add table
Add a link
Reference in a new issue