You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/performance-benchmarks.md
+18Lines changed: 18 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,24 @@ This page tracks datamodel-code-generator release and main-branch benchmark resu
6
6
7
7
datamodel-code-generator supports many schema styles and production use cases, so it includes a broad set of useful options. As releases add more capabilities, these benchmarks help keep the implementation measured, managed, and tuned so code generation stays fast in everyday use.
8
8
9
+
## Scenario Guide
10
+
11
+
Each scenario combines an input type with a case size. This guide is generated from the scenario keys in the benchmark JSON and the collector case definitions, so it changes when the benchmark matrix changes.
| Small / JSON Schema |`tests/data/jsonschema/person.json`|`default` (black/isort default), `builtin` (Built-in), `ruff` (Ruff) | Compact fixture that emphasizes CLI startup, parsing, and formatter overhead for JSON Schema to Pydantic v2 model generation. |
16
+
| Small / OpenAPI |`tests/data/openapi/api.yaml`|`default` (black/isort default), `builtin` (Built-in), `ruff` (Ruff) | Compact fixture that emphasizes CLI startup, parsing, and formatter overhead for OpenAPI component resolution and Pydantic v2 model generation. |
17
+
| Large / JSON Schema |`tests/data/performance/large_models.json`|`default` (black/isort default), `builtin` (Built-in), `ruff` (Ruff) | Larger fixture that emphasizes parser and model graph throughput for JSON Schema to Pydantic v2 model generation. |
18
+
| Large / OpenAPI |`tests/data/performance/openapi_large.yaml`|`default` (black/isort default), `builtin` (Built-in), `ruff` (Ruff) | Larger fixture that emphasizes parser and model graph throughput for OpenAPI component resolution and Pydantic v2 model generation. |
19
+
20
+
## Interpreting Metrics
21
+
22
+
-`median_ms` is the primary comparison value: it is the median generation duration after warmup runs, and lower is faster.
23
+
-`min_ms`, `max_ms`, and `stdev_ms` describe the measured spread for the same row; wide ranges usually mean CI runner noise rather than a deliberate code change.
24
+
- Formatter comparisons are scoped to the same scenario and version. `default` is the black/isort default baseline, while `builtin` and `ruff` ratios compare their medians to that baseline.
25
+
-`ok` rows have timing data. `unsupported` means the formatter or option was unavailable in that release. `failed` means installation or command execution failed, so timing cells are intentionally empty.
26
+
9
27
## Historical Trends
10
28
11
29
The benchmark data on this page is loaded from `docs/data/release-benchmarks.json` and rendered in the browser. Release runs update that JSON file directly, so the published page reflects new release measurements after the docs deployment without rewriting this Markdown file.
Copy file name to clipboardExpand all lines: tests/data/expected/release_benchmark_docs/release_benchmark_cli_outputs.txt
+17Lines changed: 17 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,23 @@ This page tracks datamodel-code-generator release and main-branch benchmark resu
10
10
11
11
datamodel-code-generator supports many schema styles and production use cases, so it includes a broad set of useful options. As releases add more capabilities, these benchmarks help keep the implementation measured, managed, and tuned so code generation stays fast in everyday use.
12
12
13
+
## Scenario Guide
14
+
15
+
Each scenario combines an input type with a case size. This guide is generated from the scenario keys in the benchmark JSON and the collector case definitions, so it changes when the benchmark matrix changes.
| Small / JSON Schema | `tests/data/jsonschema/person.json` | `default` (black/isort default), `builtin` (Built-in), `ruff` (Ruff) | Compact fixture that emphasizes CLI startup, parsing, and formatter overhead for JSON Schema to Pydantic v2 model generation. |
20
+
| Large / JSON Schema | `tests/data/performance/large_models.json` | `builtin` (Built-in) | Larger fixture that emphasizes parser and model graph throughput for JSON Schema to Pydantic v2 model generation. |
21
+
| Large / OpenAPI | `tests/data/performance/openapi_large.yaml` | `builtin` (Built-in), `ruff` (Ruff) | Larger fixture that emphasizes parser and model graph throughput for OpenAPI component resolution and Pydantic v2 model generation. |
22
+
23
+
## Interpreting Metrics
24
+
25
+
- `median_ms` is the primary comparison value: it is the median generation duration after warmup runs, and lower is faster.
26
+
- `min_ms`, `max_ms`, and `stdev_ms` describe the measured spread for the same row; wide ranges usually mean CI runner noise rather than a deliberate code change.
27
+
- Formatter comparisons are scoped to the same scenario and version. `default` is the black/isort default baseline, while `builtin` and `ruff` ratios compare their medians to that baseline.
28
+
- `ok` rows have timing data. `unsupported` means the formatter or option was unavailable in that release. `failed` means installation or command execution failed, so timing cells are intentionally empty.
29
+
13
30
## Historical Trends
14
31
15
32
The benchmark data on this page is loaded from `docs/data/release-benchmarks.json` and rendered in the browser. Release runs update that JSON file directly, so the published page reflects new release measurements after the docs deployment without rewriting this Markdown file.
Copy file name to clipboardExpand all lines: tests/data/expected/release_benchmark_docs/release_benchmark_escaped_hostile_text.txt
+15Lines changed: 15 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,21 @@ This page tracks datamodel-code-generator release and main-branch benchmark resu
6
6
7
7
datamodel-code-generator supports many schema styles and production use cases, so it includes a broad set of useful options. As releases add more capabilities, these benchmarks help keep the implementation measured, managed, and tuned so code generation stays fast in everyday use.
8
8
9
+
## Scenario Guide
10
+
11
+
Each scenario combines an input type with a case size. This guide is generated from the scenario keys in the benchmark JSON and the collector case definitions, so it changes when the benchmark matrix changes.
| Small / OpenAPI | `tests/data/openapi/api.yaml` | `default` (black/isort default) | Compact fixture that emphasizes CLI startup, parsing, and formatter overhead for OpenAPI component resolution and Pydantic v2 model generation. |
16
+
17
+
## Interpreting Metrics
18
+
19
+
- `median_ms` is the primary comparison value: it is the median generation duration after warmup runs, and lower is faster.
20
+
- `min_ms`, `max_ms`, and `stdev_ms` describe the measured spread for the same row; wide ranges usually mean CI runner noise rather than a deliberate code change.
21
+
- Formatter comparisons are scoped to the same scenario and version. `default` is the black/isort default baseline, while `builtin` and `ruff` ratios compare their medians to that baseline.
22
+
- `ok` rows have timing data. `unsupported` means the formatter or option was unavailable in that release. `failed` means installation or command execution failed, so timing cells are intentionally empty.
23
+
9
24
## Historical Trends
10
25
11
26
The benchmark data on this page is loaded from `docs/data/release-benchmarks.json` and rendered in the browser. Release runs update that JSON file directly, so the published page reflects new release measurements after the docs deployment without rewriting this Markdown file.
Copy file name to clipboardExpand all lines: tests/data/expected/release_benchmark_docs/release_benchmark_rendered.txt
+17Lines changed: 17 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,23 @@ This page tracks datamodel-code-generator release and main-branch benchmark resu
8
8
9
9
datamodel-code-generator supports many schema styles and production use cases, so it includes a broad set of useful options. As releases add more capabilities, these benchmarks help keep the implementation measured, managed, and tuned so code generation stays fast in everyday use.
10
10
11
+
## Scenario Guide
12
+
13
+
Each scenario combines an input type with a case size. This guide is generated from the scenario keys in the benchmark JSON and the collector case definitions, so it changes when the benchmark matrix changes.
| Small / JSON Schema | `tests/data/jsonschema/person.json` | `default` (black/isort default), `builtin` (Built-in), `ruff` (Ruff) | Compact fixture that emphasizes CLI startup, parsing, and formatter overhead for JSON Schema to Pydantic v2 model generation. |
18
+
| Large / JSON Schema | `tests/data/performance/large_models.json` | `builtin` (Built-in) | Larger fixture that emphasizes parser and model graph throughput for JSON Schema to Pydantic v2 model generation. |
19
+
| Large / OpenAPI | `tests/data/performance/openapi_large.yaml` | `builtin` (Built-in), `ruff` (Ruff) | Larger fixture that emphasizes parser and model graph throughput for OpenAPI component resolution and Pydantic v2 model generation. |
20
+
21
+
## Interpreting Metrics
22
+
23
+
- `median_ms` is the primary comparison value: it is the median generation duration after warmup runs, and lower is faster.
24
+
- `min_ms`, `max_ms`, and `stdev_ms` describe the measured spread for the same row; wide ranges usually mean CI runner noise rather than a deliberate code change.
25
+
- Formatter comparisons are scoped to the same scenario and version. `default` is the black/isort default baseline, while `builtin` and `ruff` ratios compare their medians to that baseline.
26
+
- `ok` rows have timing data. `unsupported` means the formatter or option was unavailable in that release. `failed` means installation or command execution failed, so timing cells are intentionally empty.
27
+
11
28
## Historical Trends
12
29
13
30
The benchmark data on this page is loaded from `docs/data/release-benchmarks.json` and rendered in the browser. Release runs update that JSON file directly, so the published page reflects new release measurements after the docs deployment without rewriting this Markdown file.
0 commit comments