mirror of
https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill.git
synced 2026-09-14 13:59:59 +08:00
d977023cb1
Standard clean builds show cache-population overhead without the corresponding cache-hit benefit, making COMPILATION_CACHING appear to regress performance. The new "cached clean" phase measures clean builds with a warm compilation cache by deleting DerivedData (not the system compilation cache) between runs. This captures the realistic developer workflow: branch switching, pulling changes, and Clean Build Folder. Changes: - benchmark_builds.py: auto-detect COMPILATION_CACHING and run cached clean builds using a controlled DerivedData path - Schema bumped to 1.2.0 with optional cached_clean runs/summary - Report generator shows Cached Clean column when data is present - All skill docs and references updated to use the cached clean metric as the primary comparison for COMPILATION_CACHING impact
231 lines
4.5 KiB
JSON
231 lines
4.5 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "Xcode Build Benchmark Artifact",
|
|
"type": "object",
|
|
"required": [
|
|
"schema_version",
|
|
"created_at",
|
|
"build",
|
|
"runs",
|
|
"summary"
|
|
],
|
|
"properties": {
|
|
"schema_version": {
|
|
"type": "string",
|
|
"enum": ["1.0.0", "1.1.0", "1.2.0"]
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"build": {
|
|
"type": "object",
|
|
"required": [
|
|
"entrypoint",
|
|
"scheme",
|
|
"configuration",
|
|
"destination",
|
|
"command"
|
|
],
|
|
"properties": {
|
|
"entrypoint": {
|
|
"type": "string",
|
|
"enum": [
|
|
"project",
|
|
"workspace"
|
|
]
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"scheme": {
|
|
"type": "string"
|
|
},
|
|
"configuration": {
|
|
"type": "string"
|
|
},
|
|
"destination": {
|
|
"type": "string"
|
|
},
|
|
"derived_data_path": {
|
|
"type": "string"
|
|
},
|
|
"command": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
},
|
|
"environment": {
|
|
"type": "object",
|
|
"properties": {
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"xcode_version": {
|
|
"type": "string"
|
|
},
|
|
"macos_version": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
},
|
|
"runs": {
|
|
"type": "object",
|
|
"required": [
|
|
"clean",
|
|
"incremental"
|
|
],
|
|
"properties": {
|
|
"clean": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/run"
|
|
}
|
|
},
|
|
"cached_clean": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/run"
|
|
}
|
|
},
|
|
"incremental": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/run"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"summary": {
|
|
"type": "object",
|
|
"required": [
|
|
"clean",
|
|
"incremental"
|
|
],
|
|
"properties": {
|
|
"clean": {
|
|
"$ref": "#/definitions/stats"
|
|
},
|
|
"cached_clean": {
|
|
"$ref": "#/definitions/stats"
|
|
},
|
|
"incremental": {
|
|
"$ref": "#/definitions/stats"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"notes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"definitions": {
|
|
"run": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"build_type",
|
|
"duration_seconds",
|
|
"success",
|
|
"command"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"build_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"clean",
|
|
"cached-clean",
|
|
"incremental"
|
|
]
|
|
},
|
|
"duration_seconds": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"success": {
|
|
"type": "boolean"
|
|
},
|
|
"command": {
|
|
"type": "string"
|
|
},
|
|
"exit_code": {
|
|
"type": "integer"
|
|
},
|
|
"raw_log_path": {
|
|
"type": "string"
|
|
},
|
|
"timing_summary_categories": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/category"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
},
|
|
"category": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"seconds"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"seconds": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"task_count": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
},
|
|
"stats": {
|
|
"type": "object",
|
|
"required": [
|
|
"count",
|
|
"min_seconds",
|
|
"max_seconds",
|
|
"median_seconds",
|
|
"average_seconds"
|
|
],
|
|
"properties": {
|
|
"count": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"min_seconds": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"max_seconds": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"median_seconds": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"average_seconds": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
}
|