60 lines
2.9 KiB
JSON
60 lines
2.9 KiB
JSON
{
|
|
"schema": "freecad-web-performance-budget/v1",
|
|
"sourceRevision": "4f4e9244e613ea2df06e70027074a562695048cb",
|
|
"inputs": {
|
|
"desktop": "FreeCAD/docs/freecad-performance-desktop.json",
|
|
"mobile": "FreeCAD/docs/freecad-performance-mobile.json",
|
|
"fixture": "FreeCAD/docs/freecad-performance-fixtures.json"
|
|
},
|
|
"thresholds": {
|
|
"startupMs": {"desktopMax": 1000, "mobileMax": 1500, "unit": "ms"},
|
|
"stepImportMs": {"desktopMax": 2000, "mobileMax": 3000, "unit": "ms"},
|
|
"resetMs": {"desktopMax": 250, "mobileMax": 500, "unit": "ms"},
|
|
"peakHeapDeltaBytes": {"max": 33554432, "unit": "bytes", "definition": "peak usedJSHeapSize minus initial usedJSHeapSize per replay"},
|
|
"postResetHeapDeltaBytes": {"max": 2097152, "unit": "bytes", "definition": "after-reset usedJSHeapSize minus initial usedJSHeapSize per replay; negative is acceptable"}
|
|
},
|
|
"measured": {
|
|
"desktop": {
|
|
"startupMs": {"min": 219.5, "max": 241.8, "median": 229.7, "result": "pass"},
|
|
"stepImportMs": {"min": 580.4, "max": 636.2, "median": 582.7, "result": "pass"},
|
|
"resetMs": {"min": 0.5, "max": 1.1, "median": 0.7, "result": "pass"},
|
|
"peakHeapDeltaBytes": {"max": 1158277, "result": "pass"},
|
|
"postResetHeapDeltaBytes": {"max": 1158277, "result": "pass"}
|
|
},
|
|
"mobileEmulation": {
|
|
"startupMs": {"min": 221.6, "max": 241.2, "median": 240.7, "result": "pass"},
|
|
"stepImportMs": {"min": 651.1, "max": 666.5, "median": 653.9, "result": "pass"},
|
|
"resetMs": {"min": 7.0, "max": 7.2, "median": 7.1, "result": "pass"},
|
|
"peakHeapDeltaBytes": {"max": 1198313, "result": "pass"},
|
|
"postResetHeapDeltaBytes": {"max": 1198313, "result": "pass"}
|
|
}
|
|
},
|
|
"sampleOutcomes": {
|
|
"STEP": "3/3 pass on desktop and mobile emulation; mesh 8376/2792/62",
|
|
"FCStd": "3/3 expected parser errors on each environment; importer remains pending",
|
|
"OBJ": "3/3 expected parser errors on each environment; mesh-file importer remains pending"
|
|
},
|
|
"pendingRisks": [
|
|
{
|
|
"id": "heap-baseline-growth",
|
|
"status": "pending",
|
|
"observation": "usedJSHeapSize baseline increased across repeated page reloads in one Chrome session; no forced GC API is available",
|
|
"impact": "this evidence cannot prove long-session reclamation beyond the per-run post-reset threshold"
|
|
},
|
|
{
|
|
"id": "cache-hit-not-observable",
|
|
"status": "pending",
|
|
"observation": "current sample path writes mesh cache after a load but does not read it before the next load",
|
|
"impact": "cache hit latency is excluded from this budget"
|
|
},
|
|
{
|
|
"id": "fcstd-and-mesh-import",
|
|
"status": "pending",
|
|
"observation": "FCStd and OBJ fixtures produce the fixed STEP-parser error in the current UI",
|
|
"impact": "no performance claim is made for those formats"
|
|
}
|
|
],
|
|
"result": "pass_for_measured_step_contract_with_explicit_pending_scope",
|
|
"blocked": false
|
|
}
|