Eksempel-applikasjon for prosess rundt ytelsesoptimalisering i .NET. Som eksempel brukes kalkulering av outrights-markeder i fotball. Et API endepunkt tar inn en liste med lag og "expected goals", simulerer en sesong N ganger og returnerer markedene "Winner" og "Top 4" - sannsynlighet for henholdsvis seier og topp 4 plassering på tabellen.
Første utkast av applikasjonen er i initial
-branch, som er helt vanlig implementasjon uten spesielle optimaliseringer.
Med utgangspunkt i denne kjører jeg profiling og benchmarking og implementerer forskjellige optimaliseringer i PRs.
- .NET 6 RC 1+
- benchmarkdotnet
- DisassemblyDiagnoser
- Profiling med ETW
- Profiling med EventPipe (kan bruke Speedscope)
- PerfView
- dotTrace, dotMemory
- Visual Studio Profiler
- Distributed tracing
- ObjectLayoutInspector for å se størrelsen på en class/struct i en gitt runtime
- Sharplab for å se på codegen - IL og JIT asm
- ILSpy
https://no.wikipedia.org/wiki/Premier_League_2020/21
// temp1 = tbody lagret som global variabel i console
// Deretter kopiert inn i testinput.json
Array.prototype.map.call(Array.prototype.slice.call(temp1.children, 1), n => ({ name: n.children[1].innerText, expectedGoals: parseInt(n.children[6].innerText, 10) / 38.0}))