-
-
Notifications
You must be signed in to change notification settings - Fork 52
131 lines (107 loc) · 4.62 KB
/
speed-comparison.yml
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
name: Speed Comparison
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
jobs:
run-time-benchmarks:
environment: ${{ github.ref == 'refs/heads/main' && 'Production' || 'Pull Requests' }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
class: [RepeatTests, BasicTest]
fail-fast: false
runs-on: ${{ matrix.os }}
concurrency:
group: "speed-comparison-run-time-${{matrix.os}}-${{matrix.class}}"
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
- name: Build TUnit AOT .NET 8.0
run: dotnet publish TUnitTimer.csproj -c Release --framework net8.0 --output aot-publish-net8 --property:Aot=true --runtime ${{ matrix.os == 'windows-latest' && 'win-x64' || matrix.os == 'ubuntu-latest' && 'linux-x64' || 'osx-x64' }}
working-directory: "tools/speed-comparison/TUnitTimer/TUnitTimer"
- name: Build TUnit AOT .NET 9.0
run: dotnet publish TUnitTimer.csproj -c Release --framework net9.0 --output aot-publish-net9 --property:Aot=true --runtime ${{ matrix.os == 'windows-latest' && 'win-x64' || matrix.os == 'ubuntu-latest' && 'linux-x64' || 'osx-x64' }}
working-directory: "tools/speed-comparison/TUnitTimer/TUnitTimer"
- name: Build TUnit Single File .NET 8.0
run: dotnet publish TUnitTimer.csproj -c Release --framework net8.0 --output singlefile-publish-net8 --property:SingleFile=true --runtime ${{ matrix.os == 'windows-latest' && 'win-x64' || matrix.os == 'ubuntu-latest' && 'linux-x64' || 'osx-x64' }}
working-directory: "tools/speed-comparison/TUnitTimer/TUnitTimer"
- name: Build TUnit Single File .NET 9.0
run: dotnet publish TUnitTimer.csproj -c Release --framework net9.0 --output singlefile-publish-net9 --property:SingleFile=true --runtime ${{ matrix.os == 'windows-latest' && 'win-x64' || matrix.os == 'ubuntu-latest' && 'linux-x64' || 'osx-x64' }}
working-directory: "tools/speed-comparison/TUnitTimer/TUnitTimer"
- name: Build TUnit
run: dotnet build -c Release
working-directory: "tools/speed-comparison/TUnitTimer"
- name: Build xUnit
run: dotnet build -c Release
working-directory: "tools/speed-comparison/xUnitTimer"
- name: Build NUnit
run: dotnet build -c Release
working-directory: "tools/speed-comparison/NUnitTimer"
- name: Build MSTest
run: dotnet build -c Release
working-directory: "tools/speed-comparison/MSTestTimer"
- name: Run Benchmark
run: dotnet run -c Release --framework net9.0 --allCategories=Runtime
working-directory: "tools/speed-comparison/Tests.Benchmark"
env:
CLASS_NAME: ${{ matrix.class }}
- name: Upload Markdown
uses: actions/upload-artifact@v4
if: always()
with:
name: ${{ matrix.os }}_markdown_run_time_${{ matrix.class }}
path: |
**/BenchmarkDotNet.Artifacts/**
build-time-benchmarks:
environment: ${{ github.ref == 'refs/heads/main' && 'Production' || 'Pull Requests' }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
# framework: [net8.0, net9.0]
fail-fast: false
runs-on: ${{ matrix.os }}
concurrency:
group: "speed-comparison-build-time-${{matrix.os}}"
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
- name: Run Benchmark
run: dotnet run -c Release --allCategories=Build --framework net9.0
working-directory: "tools/speed-comparison/Tests.Benchmark"
- name: Upload Markdown
uses: actions/upload-artifact@v4
if: always()
with:
name: ${{ matrix.os }}_markdown_build_time
path: |
**/BenchmarkDotNet.Artifacts/**
generate-readme:
runs-on: ubuntu-latest
needs: [run-time-benchmarks, build-time-benchmarks]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
- name: Generate ReadMe
uses: ./.github/actions/execute-pipeline
with:
categories: ReadMe
admin-token: ${{ secrets.ADMIN_TOKEN }}
environment: Development