perf - Add performance report for 4.2.9 [ci skip]
This commit is contained in:
parent
1e6f06845c
commit
ad6923aae8
9 changed files with 554 additions and 0 deletions
BIN
reports/4.2.9/chart-category-comparison.png
Normal file
BIN
reports/4.2.9/chart-category-comparison.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 88 KiB |
BIN
reports/4.2.9/chart-dashboard.png
Normal file
BIN
reports/4.2.9/chart-dashboard.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 144 KiB |
BIN
reports/4.2.9/chart-duration-by-language.png
Normal file
BIN
reports/4.2.9/chart-duration-by-language.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 159 KiB |
BIN
reports/4.2.9/chart-duration-histogram.png
Normal file
BIN
reports/4.2.9/chart-duration-histogram.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 57 KiB |
BIN
reports/4.2.9/chart-queue-vs-execution.png
Normal file
BIN
reports/4.2.9/chart-queue-vs-execution.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 116 KiB |
BIN
reports/4.2.9/chart-speed-leaders.png
Normal file
BIN
reports/4.2.9/chart-speed-leaders.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 75 KiB |
407
reports/4.2.9/perf.json
Normal file
407
reports/4.2.9/perf.json
Normal file
|
|
@ -0,0 +1,407 @@
|
|||
{
|
||||
"tag": "4.2.9",
|
||||
"generated_at": "2026-01-23T10:05:34Z",
|
||||
"parent_pipeline_id": 12057,
|
||||
"child_pipeline_id": 12060,
|
||||
"summary": {
|
||||
"total_tests": 645,
|
||||
"passed_tests": 645,
|
||||
"failed_tests": 0,
|
||||
"total_languages": 43,
|
||||
"passed_languages": 43,
|
||||
"avg_duration_seconds": 107,
|
||||
"max_duration_seconds": 279,
|
||||
"min_duration_seconds": 19,
|
||||
"slowest_language": "ruby",
|
||||
"fastest_language": "d"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"language": "ruby",
|
||||
"status": "Passed",
|
||||
"queued_duration": 6.326948,
|
||||
"started_at": "2026-01-23T09:58:27Z",
|
||||
"updated_at": "2026-01-23T10:03:06Z",
|
||||
"job_id": 29092,
|
||||
"duration_seconds": 279
|
||||
},
|
||||
{
|
||||
"language": "deno",
|
||||
"status": "Passed",
|
||||
"queued_duration": 65.212386,
|
||||
"started_at": "2026-01-23T09:59:29Z",
|
||||
"updated_at": "2026-01-23T10:03:42Z",
|
||||
"job_id": 29107,
|
||||
"duration_seconds": 253
|
||||
},
|
||||
{
|
||||
"language": "rust",
|
||||
"status": "Passed",
|
||||
"queued_duration": 126.54301,
|
||||
"started_at": "2026-01-23T10:00:29Z",
|
||||
"updated_at": "2026-01-23T10:04:23Z",
|
||||
"job_id": 29113,
|
||||
"duration_seconds": 234
|
||||
},
|
||||
{
|
||||
"language": "crystal",
|
||||
"status": "Passed",
|
||||
"queued_duration": 64.455629,
|
||||
"started_at": "2026-01-23T09:59:27Z",
|
||||
"updated_at": "2026-01-23T10:03:08Z",
|
||||
"job_id": 29105,
|
||||
"duration_seconds": 221
|
||||
},
|
||||
{
|
||||
"language": "java",
|
||||
"status": "Passed",
|
||||
"queued_duration": 127.285032,
|
||||
"started_at": "2026-01-23T10:00:30Z",
|
||||
"updated_at": "2026-01-23T10:04:09Z",
|
||||
"job_id": 29114,
|
||||
"duration_seconds": 219
|
||||
},
|
||||
{
|
||||
"language": "cpp",
|
||||
"status": "Passed",
|
||||
"queued_duration": 120.451453,
|
||||
"started_at": "2026-01-23T10:00:21Z",
|
||||
"updated_at": "2026-01-23T10:03:08Z",
|
||||
"job_id": 29111,
|
||||
"duration_seconds": 167
|
||||
},
|
||||
{
|
||||
"language": "javascript",
|
||||
"status": "Passed",
|
||||
"queued_duration": 1.947271,
|
||||
"started_at": "2026-01-23T09:58:22Z",
|
||||
"updated_at": "2026-01-23T10:01:08Z",
|
||||
"job_id": 29090,
|
||||
"duration_seconds": 166
|
||||
},
|
||||
{
|
||||
"language": "python",
|
||||
"status": "Passed",
|
||||
"queued_duration": 1.297771,
|
||||
"started_at": "2026-01-23T09:58:22Z",
|
||||
"updated_at": "2026-01-23T10:01:07Z",
|
||||
"job_id": 29089,
|
||||
"duration_seconds": 165
|
||||
},
|
||||
{
|
||||
"language": "php",
|
||||
"status": "Passed",
|
||||
"queued_duration": 7.795789,
|
||||
"started_at": "2026-01-23T09:58:29Z",
|
||||
"updated_at": "2026-01-23T10:01:07Z",
|
||||
"job_id": 29094,
|
||||
"duration_seconds": 158
|
||||
},
|
||||
{
|
||||
"language": "perl",
|
||||
"status": "Passed",
|
||||
"queued_duration": 7.446579,
|
||||
"started_at": "2026-01-23T09:58:28Z",
|
||||
"updated_at": "2026-01-23T10:01:06Z",
|
||||
"job_id": 29093,
|
||||
"duration_seconds": 158
|
||||
},
|
||||
{
|
||||
"language": "zig",
|
||||
"status": "Passed",
|
||||
"queued_duration": 165.884393,
|
||||
"started_at": "2026-01-23T10:01:09Z",
|
||||
"updated_at": "2026-01-23T10:03:42Z",
|
||||
"job_id": 29119,
|
||||
"duration_seconds": 153
|
||||
},
|
||||
{
|
||||
"language": "scheme",
|
||||
"status": "Passed",
|
||||
"queued_duration": 11.814258,
|
||||
"started_at": "2026-01-23T09:58:34Z",
|
||||
"updated_at": "2026-01-23T10:01:07Z",
|
||||
"job_id": 29101,
|
||||
"duration_seconds": 153
|
||||
},
|
||||
{
|
||||
"language": "commonlisp",
|
||||
"status": "Passed",
|
||||
"queued_duration": 63.913243,
|
||||
"started_at": "2026-01-23T09:59:26Z",
|
||||
"updated_at": "2026-01-23T10:01:53Z",
|
||||
"job_id": 29104,
|
||||
"duration_seconds": 147
|
||||
},
|
||||
{
|
||||
"language": "raku",
|
||||
"status": "Passed",
|
||||
"queued_duration": 71.864277,
|
||||
"started_at": "2026-01-23T09:59:31Z",
|
||||
"updated_at": "2026-01-23T10:01:52Z",
|
||||
"job_id": 29109,
|
||||
"duration_seconds": 141
|
||||
},
|
||||
{
|
||||
"language": "powershell",
|
||||
"status": "Passed",
|
||||
"queued_duration": 26.433311,
|
||||
"started_at": "2026-01-23T09:58:49Z",
|
||||
"updated_at": "2026-01-23T10:01:04Z",
|
||||
"job_id": 29102,
|
||||
"duration_seconds": 135
|
||||
},
|
||||
{
|
||||
"language": "typescript",
|
||||
"status": "Passed",
|
||||
"queued_duration": 2.665153,
|
||||
"started_at": "2026-01-23T09:58:23Z",
|
||||
"updated_at": "2026-01-23T10:00:21Z",
|
||||
"job_id": 29091,
|
||||
"duration_seconds": 118
|
||||
},
|
||||
{
|
||||
"language": "ocaml",
|
||||
"status": "Passed",
|
||||
"queued_duration": 207.229716,
|
||||
"started_at": "2026-01-23T10:01:47Z",
|
||||
"updated_at": "2026-01-23T10:03:42Z",
|
||||
"job_id": 29126,
|
||||
"duration_seconds": 115
|
||||
},
|
||||
{
|
||||
"language": "erlang",
|
||||
"status": "Passed",
|
||||
"queued_duration": 188.015742,
|
||||
"started_at": "2026-01-23T10:01:57Z",
|
||||
"updated_at": "2026-01-23T10:03:42Z",
|
||||
"job_id": 29132,
|
||||
"duration_seconds": 105
|
||||
},
|
||||
{
|
||||
"language": "awk",
|
||||
"status": "Passed",
|
||||
"queued_duration": 70.275776,
|
||||
"started_at": "2026-01-23T09:59:29Z",
|
||||
"updated_at": "2026-01-23T10:01:08Z",
|
||||
"job_id": 29108,
|
||||
"duration_seconds": 99
|
||||
},
|
||||
{
|
||||
"language": "haskell",
|
||||
"status": "Passed",
|
||||
"queued_duration": 187.953071,
|
||||
"started_at": "2026-01-23T10:01:28Z",
|
||||
"updated_at": "2026-01-23T10:03:06Z",
|
||||
"job_id": 29125,
|
||||
"duration_seconds": 98
|
||||
},
|
||||
{
|
||||
"language": "groovy",
|
||||
"status": "Passed",
|
||||
"queued_duration": 65.116715,
|
||||
"started_at": "2026-01-23T09:59:28Z",
|
||||
"updated_at": "2026-01-23T10:01:06Z",
|
||||
"job_id": 29106,
|
||||
"duration_seconds": 98
|
||||
},
|
||||
{
|
||||
"language": "go",
|
||||
"status": "Passed",
|
||||
"queued_duration": 121.402909,
|
||||
"started_at": "2026-01-23T10:00:22Z",
|
||||
"updated_at": "2026-01-23T10:01:54Z",
|
||||
"job_id": 29112,
|
||||
"duration_seconds": 92
|
||||
},
|
||||
{
|
||||
"language": "kotlin",
|
||||
"status": "Passed",
|
||||
"queued_duration": 160.902907,
|
||||
"started_at": "2026-01-23T10:01:04Z",
|
||||
"updated_at": "2026-01-23T10:02:33Z",
|
||||
"job_id": 29115,
|
||||
"duration_seconds": 89
|
||||
},
|
||||
{
|
||||
"language": "dart",
|
||||
"status": "Passed",
|
||||
"queued_duration": 172.483178,
|
||||
"started_at": "2026-01-23T10:01:12Z",
|
||||
"updated_at": "2026-01-23T10:02:34Z",
|
||||
"job_id": 29123,
|
||||
"duration_seconds": 82
|
||||
},
|
||||
{
|
||||
"language": "fsharp",
|
||||
"status": "Passed",
|
||||
"queued_duration": 213.546325,
|
||||
"started_at": "2026-01-23T10:01:53Z",
|
||||
"updated_at": "2026-01-23T10:03:06Z",
|
||||
"job_id": 29127,
|
||||
"duration_seconds": 73
|
||||
},
|
||||
{
|
||||
"language": "dotnet",
|
||||
"status": "Passed",
|
||||
"queued_duration": 214.573651,
|
||||
"started_at": "2026-01-23T10:01:55Z",
|
||||
"updated_at": "2026-01-23T10:03:06Z",
|
||||
"job_id": 29129,
|
||||
"duration_seconds": 71
|
||||
},
|
||||
{
|
||||
"language": "prolog",
|
||||
"status": "Passed",
|
||||
"queued_duration": 215.153265,
|
||||
"started_at": "2026-01-23T10:01:55Z",
|
||||
"updated_at": "2026-01-23T10:03:04Z",
|
||||
"job_id": 29130,
|
||||
"duration_seconds": 69
|
||||
},
|
||||
{
|
||||
"language": "forth",
|
||||
"status": "Passed",
|
||||
"queued_duration": 216.587287,
|
||||
"started_at": "2026-01-23T10:01:56Z",
|
||||
"updated_at": "2026-01-23T10:03:05Z",
|
||||
"job_id": 29131,
|
||||
"duration_seconds": 69
|
||||
},
|
||||
{
|
||||
"language": "elixir",
|
||||
"status": "Passed",
|
||||
"queued_duration": 10.777275,
|
||||
"started_at": "2026-01-23T09:58:32Z",
|
||||
"updated_at": "2026-01-23T09:59:31Z",
|
||||
"job_id": 29098,
|
||||
"duration_seconds": 59
|
||||
},
|
||||
{
|
||||
"language": "bash",
|
||||
"status": "Passed",
|
||||
"queued_duration": 9.592589,
|
||||
"started_at": "2026-01-23T09:58:31Z",
|
||||
"updated_at": "2026-01-23T09:59:29Z",
|
||||
"job_id": 29096,
|
||||
"duration_seconds": 58
|
||||
},
|
||||
{
|
||||
"language": "lua",
|
||||
"status": "Passed",
|
||||
"queued_duration": 8.240926,
|
||||
"started_at": "2026-01-23T09:58:30Z",
|
||||
"updated_at": "2026-01-23T09:59:26Z",
|
||||
"job_id": 29095,
|
||||
"duration_seconds": 56
|
||||
},
|
||||
{
|
||||
"language": "clojure",
|
||||
"status": "Passed",
|
||||
"queued_duration": 63.067493,
|
||||
"started_at": "2026-01-23T09:59:25Z",
|
||||
"updated_at": "2026-01-23T10:00:21Z",
|
||||
"job_id": 29103,
|
||||
"duration_seconds": 56
|
||||
},
|
||||
{
|
||||
"language": "tcl",
|
||||
"status": "Passed",
|
||||
"queued_duration": 11.603923,
|
||||
"started_at": "2026-01-23T09:58:33Z",
|
||||
"updated_at": "2026-01-23T09:59:27Z",
|
||||
"job_id": 29100,
|
||||
"duration_seconds": 54
|
||||
},
|
||||
{
|
||||
"language": "r",
|
||||
"status": "Passed",
|
||||
"queued_duration": 10.337757,
|
||||
"started_at": "2026-01-23T09:58:32Z",
|
||||
"updated_at": "2026-01-23T09:59:26Z",
|
||||
"job_id": 29097,
|
||||
"duration_seconds": 54
|
||||
},
|
||||
{
|
||||
"language": "c",
|
||||
"status": "Passed",
|
||||
"queued_duration": 119.603493,
|
||||
"started_at": "2026-01-23T10:00:20Z",
|
||||
"updated_at": "2026-01-23T10:01:08Z",
|
||||
"job_id": 29110,
|
||||
"duration_seconds": 48
|
||||
},
|
||||
{
|
||||
"language": "cobol",
|
||||
"status": "Passed",
|
||||
"queued_duration": 164.022284,
|
||||
"started_at": "2026-01-23T10:01:07Z",
|
||||
"updated_at": "2026-01-23T10:01:53Z",
|
||||
"job_id": 29116,
|
||||
"duration_seconds": 46
|
||||
},
|
||||
{
|
||||
"language": "fortran",
|
||||
"status": "Passed",
|
||||
"queued_duration": 164.835607,
|
||||
"started_at": "2026-01-23T10:01:08Z",
|
||||
"updated_at": "2026-01-23T10:01:53Z",
|
||||
"job_id": 29117,
|
||||
"duration_seconds": 45
|
||||
},
|
||||
{
|
||||
"language": "v",
|
||||
"status": "Passed",
|
||||
"queued_duration": 171.26956,
|
||||
"started_at": "2026-01-23T10:01:11Z",
|
||||
"updated_at": "2026-01-23T10:01:53Z",
|
||||
"job_id": 29121,
|
||||
"duration_seconds": 42
|
||||
},
|
||||
{
|
||||
"language": "objc",
|
||||
"status": "Passed",
|
||||
"queued_duration": 171.839862,
|
||||
"started_at": "2026-01-23T10:01:11Z",
|
||||
"updated_at": "2026-01-23T10:01:53Z",
|
||||
"job_id": 29122,
|
||||
"duration_seconds": 42
|
||||
},
|
||||
{
|
||||
"language": "nim",
|
||||
"status": "Passed",
|
||||
"queued_duration": 166.413462,
|
||||
"started_at": "2026-01-23T10:01:10Z",
|
||||
"updated_at": "2026-01-23T10:01:52Z",
|
||||
"job_id": 29120,
|
||||
"duration_seconds": 42
|
||||
},
|
||||
{
|
||||
"language": "julia",
|
||||
"status": "Passed",
|
||||
"queued_duration": 173.014692,
|
||||
"started_at": "2026-01-23T10:01:13Z",
|
||||
"updated_at": "2026-01-23T10:01:53Z",
|
||||
"job_id": 29124,
|
||||
"duration_seconds": 40
|
||||
},
|
||||
{
|
||||
"language": "csharp",
|
||||
"status": "Passed",
|
||||
"queued_duration": 214.031644,
|
||||
"started_at": "2026-01-23T10:01:54Z",
|
||||
"updated_at": "2026-01-23T10:02:34Z",
|
||||
"job_id": 29128,
|
||||
"duration_seconds": 40
|
||||
},
|
||||
{
|
||||
"language": "d",
|
||||
"status": "Passed",
|
||||
"queued_duration": 165.579493,
|
||||
"started_at": "2026-01-23T10:01:09Z",
|
||||
"updated_at": "2026-01-23T10:01:28Z",
|
||||
"job_id": 29118,
|
||||
"duration_seconds": 19
|
||||
}
|
||||
]
|
||||
}
|
||||
146
reports/4.2.9/perf.md
Normal file
146
reports/4.2.9/perf.md
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
# Performance Report: 4.2.9
|
||||
|
||||
**Generated:** 2026-01-23T10:05:34Z
|
||||
**Pipeline:** [#12060](https://git.unturf.com/engineering/unturf/un-inception/-/pipelines/12060)
|
||||
|
||||
## Summary
|
||||
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Total Tests | 645 |
|
||||
| Passed | 645 |
|
||||
| Failed | 0 |
|
||||
| Pass Rate | 100.0% |
|
||||
| Languages | 43 |
|
||||
| Avg Duration | 107s |
|
||||
| Slowest | ruby (279s) |
|
||||
| Fastest | d (19s) |
|
||||
|
||||
---
|
||||
|
||||
## Test Duration by Language
|
||||
|
||||
The primary performance metric - how long each language takes to run its full test suite (15 tests per language).
|
||||
|
||||

|
||||
|
||||
**Key observations:**
|
||||
- **RUBY** and **DENO** are outliers at 90+ seconds
|
||||
- Most languages cluster between 20-40 seconds
|
||||
- Compiled languages (red) tend to be faster than interpreted (blue)
|
||||
- **D** is the fastest at 19 seconds
|
||||
|
||||
---
|
||||
|
||||
## Compiled vs Interpreted
|
||||
|
||||
Comparing performance between compiled languages (C, Go, Rust, etc.) and interpreted languages (Python, Ruby, JavaScript, etc.).
|
||||
|
||||

|
||||
|
||||
**Findings:**
|
||||
- 20 compiled languages vs 22 interpreted
|
||||
- Compiled languages have lower median execution time
|
||||
- Interpreted languages show more variance (wider spread)
|
||||
- The white diamond marks the mean for each category
|
||||
|
||||
---
|
||||
|
||||
## Duration Distribution
|
||||
|
||||
Histogram showing how test durations are distributed across all 43 languages.
|
||||
|
||||

|
||||
|
||||
**Distribution analysis:**
|
||||
- Most languages complete in 20-35 seconds (the peak)
|
||||
- Mean (green dashed) and median (blue dotted) are close together
|
||||
- Long tail on the right from slow outliers (ruby, deno)
|
||||
|
||||
---
|
||||
|
||||
## Speed Leaders
|
||||
|
||||
Side-by-side comparison of the 10 slowest and 10 fastest languages.
|
||||
|
||||

|
||||
|
||||
**Slowest (left):** RUBY, DENO, RUST, CRYSTAL, JAVA
|
||||
**Fastest (right):** D, CSHARP, JULIA, NIM, OBJC
|
||||
|
||||
---
|
||||
|
||||
## Queue vs Execution Time
|
||||
|
||||
Scatter plot showing the relationship between CI queue wait time and actual test execution time.
|
||||
|
||||

|
||||
|
||||
**Notes:**
|
||||
- Queue time is how long the job waited for a runner
|
||||
- Most jobs had similar queue times (clustered vertically)
|
||||
- Outliers labeled - ruby and deno took longest to execute regardless of queue time
|
||||
|
||||
---
|
||||
|
||||
## Dashboard
|
||||
|
||||
Summary dashboard combining key metrics and visualizations.
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Raw Data
|
||||
|
||||
### Per-Language Performance
|
||||
|
||||
| Language | Status | Duration |
|
||||
|----------|--------|----------|
|
||||
| ruby | Passed | 279s |
|
||||
| deno | Passed | 253s |
|
||||
| rust | Passed | 234s |
|
||||
| crystal | Passed | 221s |
|
||||
| java | Passed | 219s |
|
||||
| cpp | Passed | 167s |
|
||||
| javascript | Passed | 166s |
|
||||
| python | Passed | 165s |
|
||||
| php | Passed | 158s |
|
||||
| perl | Passed | 158s |
|
||||
| zig | Passed | 153s |
|
||||
| scheme | Passed | 153s |
|
||||
| commonlisp | Passed | 147s |
|
||||
| raku | Passed | 141s |
|
||||
| powershell | Passed | 135s |
|
||||
| typescript | Passed | 118s |
|
||||
| ocaml | Passed | 115s |
|
||||
| erlang | Passed | 105s |
|
||||
| awk | Passed | 99s |
|
||||
| haskell | Passed | 98s |
|
||||
| groovy | Passed | 98s |
|
||||
| go | Passed | 92s |
|
||||
| kotlin | Passed | 89s |
|
||||
| dart | Passed | 82s |
|
||||
| fsharp | Passed | 73s |
|
||||
| dotnet | Passed | 71s |
|
||||
| prolog | Passed | 69s |
|
||||
| forth | Passed | 69s |
|
||||
| elixir | Passed | 59s |
|
||||
| bash | Passed | 58s |
|
||||
| lua | Passed | 56s |
|
||||
| clojure | Passed | 56s |
|
||||
| tcl | Passed | 54s |
|
||||
| r | Passed | 54s |
|
||||
| c | Passed | 48s |
|
||||
| cobol | Passed | 46s |
|
||||
| fortran | Passed | 45s |
|
||||
| v | Passed | 42s |
|
||||
| objc | Passed | 42s |
|
||||
| nim | Passed | 42s |
|
||||
| julia | Passed | 40s |
|
||||
| csharp | Passed | 40s |
|
||||
| d | Passed | 19s |
|
||||
|
||||
---
|
||||
|
||||
*Report generated by UN Inception CI pipeline*
|
||||
|
|
@ -13,3 +13,4 @@ Tracking compile and test execution times across releases.
|
|||
| 4.2.6 | 2026-01-19 | 642 | 100.0% | 54s | haskell | awk |
|
||||
| 4.2.7 | 2026-01-23 | 631 | 99.8% | 117s | typescript | dotnet |
|
||||
| 4.2.8 | 2026-01-23 | 645 | 99.8% | 111s | kotlin | fortran |
|
||||
| 4.2.9 | 2026-01-23 | 645 | 100.0% | 107s | ruby | d |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue