Files
hapi/docs/performance/native-scroll-2026-09-10.json
T
weishu 0dcc70e7c7 perf(native): optimize iOS transcript refresh and add frame profiling
Preserve hosted rows while propagating current SwiftUI environments and render captures. Add differential refresh regressions, opt-in real-clock iOS/Android profiling, and reproducible performance results.

Validation: typecheck; CLI/hub/web/shared/relay suites (Web rerun with NODE_OPTIONS=--no-experimental-webstorage for Node 26/jsdom compatibility); existing iOS Debug/Release and Android regression runs.
2026-09-10 16:22:36 +08:00

2193 lines
66 KiB
JSON

{
"schemaVersion": 1,
"date": "2026-09-10",
"businessCodeBaseline": "5194271f",
"host": {
"cpu": "Apple M4 Pro",
"cores": 14,
"memoryGiB": 48,
"os": "macOS 26.6.2",
"xcode": "26.6"
},
"scope": "800 synthetic messages, actual native renderers, UI-only; no network/pagination/images; 3 repetitions per scenario",
"metricCaveats": [
"iOS values are real CADisplayLink callback cadence, NOT compositor-presented FPS.",
"iOS CPU-sampled run excluded from timing results; overlapping stack-path percentages are not additive.",
"Android present cadence uses only real drag intervals, excludes pauses between gestures.",
"Android emulator Prediction Error/Early Present classifications are not app-jank counts.",
"Android profile build is non-debuggable and unminified, not the store APK.",
"Android initial 64 MiB trace lost early intervals; its app JSON/gfxinfo are complete.",
"Android controlled run changed environment, not app business code; no app FPS improvement claim.",
"No real-device FPS claim or CI timing threshold."
],
"iosBaseline": [
{
"callbackFPS": 59.835856118858985,
"callbacks": 360,
"distancePoints": 10799.666666666664,
"intervalP50Ms": 16.66574997943826,
"intervalP95Ms": 16.71550000901334,
"intervalP99Ms": 16.741750005166978,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.10416665044613,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.8911666518542916,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "plain",
"seconds": 6.016459416656289,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.838464817681064,
"callbacks": 360,
"distancePoints": 10799.333333333328,
"intervalP50Ms": 16.665875009493902,
"intervalP95Ms": 16.721541673177853,
"intervalP99Ms": 16.755458345869556,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 32.65629164525308,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.607750000199303,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "plain",
"seconds": 6.0161971249908675,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.83293361634186,
"callbacks": 359,
"distancePoints": 10770,
"intervalP50Ms": 16.665666655171663,
"intervalP95Ms": 16.728499991586432,
"intervalP99Ms": 17.154375003883615,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 32.643500017002225,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.4645416629500687,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "plain",
"seconds": 6.000040083308704,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 56.66026051610371,
"callbacks": 340,
"distancePoints": 10771.333333333336,
"intervalP50Ms": 16.674708313075826,
"intervalP95Ms": 27.575958345551044,
"intervalP99Ms": 33.30479166470468,
"intervalsOver25Ms": 20,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.38941663969308,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.5523333384189755,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "rich",
"seconds": 6.000678374985,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 56.18475236535162,
"callbacks": 338,
"distancePoints": 10798.666666666672,
"intervalP50Ms": 16.67508331593126,
"intervalP95Ms": 32.56079167476855,
"intervalP99Ms": 33.27533332048915,
"intervalsOver25Ms": 23,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.32341666100547,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.5029166641179472,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "rich",
"seconds": 6.015867041685851,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 55.82756758609029,
"callbacks": 335,
"distancePoints": 10771,
"intervalP50Ms": 16.679666645359248,
"intervalP95Ms": 32.55633334629238,
"intervalP99Ms": 33.30287500284612,
"intervalsOver25Ms": 25,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.42083335155621,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.5006249994039536,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "rich",
"seconds": 6.000619666679995,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 53.85873676189395,
"callbacks": 324,
"distancePoints": 10798.333333333336,
"intervalP50Ms": 16.67712500784546,
"intervalP95Ms": 33.27216664911248,
"intervalP99Ms": 33.38325000368059,
"intervalsOver25Ms": 37,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.87570832273923,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 1.2182083446532488,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.015737083333079,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 54.189111646722964,
"callbacks": 326,
"distancePoints": 10798.666666666672,
"intervalP50Ms": 16.67679165257141,
"intervalP95Ms": 33.26404167455621,
"intervalP99Ms": 33.369624987244606,
"intervalsOver25Ms": 35,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.38958331733011,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 1.192208321299404,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.015968708350556,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 54.83325412958423,
"callbacks": 329,
"distancePoints": 10770,
"intervalP50Ms": 16.675374994520098,
"intervalP95Ms": 33.2626250165049,
"intervalP99Ms": 33.36345832212828,
"intervalsOver25Ms": 31,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.40625000419095,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 1.2326249852776527,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.000008666684153,
"viewportHeight": 759,
"viewportWidth": 393
}
],
"iosAblationReverted": [
{
"callbackFPS": 59.836764061208584,
"callbacks": 360,
"distancePoints": 10799.333333333328,
"intervalP50Ms": 16.6659583337605,
"intervalP95Ms": 16.72525002504699,
"intervalP99Ms": 17.057249991921708,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 32.61362499324605,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.7799166487529874,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "plain",
"seconds": 6.0163681249832734,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.835738846595184,
"callbacks": 360,
"distancePoints": 10799.666666666664,
"intervalP50Ms": 16.66637501330115,
"intervalP95Ms": 16.77149999886751,
"intervalP99Ms": 17.381374986143783,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 32.605749991489574,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.4877499886788428,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "plain",
"seconds": 6.016471208335133,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.84020214251916,
"callbacks": 360,
"distancePoints": 10798.666666666664,
"intervalP50Ms": 16.666249983245507,
"intervalP95Ms": 16.872041655005887,
"intervalP99Ms": 17.382541671395302,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.405208348995075,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.5602083110716194,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "plain",
"seconds": 6.0160224583232775,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 56.1771483770243,
"callbacks": 338,
"distancePoints": 10799.666666666672,
"intervalP50Ms": 16.673333331709728,
"intervalP95Ms": 32.53729167045094,
"intervalP99Ms": 33.29974997905083,
"intervalsOver25Ms": 23,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.584208344109356,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.520875008078292,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "rich",
"seconds": 6.016681333334418,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 55.82998508511244,
"callbacks": 335,
"distancePoints": 10770,
"intervalP50Ms": 16.673333331709728,
"intervalP95Ms": 32.53129165386781,
"intervalP99Ms": 33.28450000844896,
"intervalsOver25Ms": 25,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.3017083175946,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.5340416682884097,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "rich",
"seconds": 6.0003598333278205,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 56.329473590707714,
"callbacks": 338,
"distancePoints": 10771,
"intervalP50Ms": 16.67487499071285,
"intervalP95Ms": 32.53479168051854,
"intervalP99Ms": 33.280500007094815,
"intervalsOver25Ms": 22,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.413999975891784,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.5221666651777923,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "rich",
"seconds": 6.000411125016399,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 55.18471285393305,
"callbacks": 332,
"distancePoints": 10799,
"intervalP50Ms": 16.674249985953793,
"intervalP95Ms": 32.74024999700487,
"intervalP99Ms": 33.33033333183266,
"intervalsOver25Ms": 29,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 34.09512501093559,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 1.295499998377636,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.016158874990651,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 56.0182051964697,
"callbacks": 337,
"distancePoints": 10798.666666666672,
"intervalP50Ms": 16.670375014655292,
"intervalP95Ms": 32.711833307985216,
"intervalP99Ms": 33.32979168044403,
"intervalsOver25Ms": 24,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.71408334351145,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 1.2755833158735186,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.015901416656561,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 55.66599287621095,
"callbacks": 334,
"distancePoints": 10770,
"intervalP50Ms": 16.67262500268407,
"intervalP95Ms": 32.70000001066364,
"intervalP99Ms": 33.31570833688602,
"intervalsOver25Ms": 26,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.59474998433143,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 1.2799999967683107,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.00007262500003,
"viewportHeight": 759,
"viewportWidth": 393
}
],
"iosSample": {
"mainSamples": 32440,
"nonWaitingLeafSamples": 6014,
"overlappingPathsPercent": {
"hosting": 40.2,
"sizeThatFits": 32.8,
"preferredLayoutAttributesFitting": 27.6,
"StyledText": 16.9,
"drain": 19.9,
"TranscriptLayout": 2.3
}
},
"androidInitial": [
{
"refreshRateHz": 60.000003814697266,
"seconds": 7.813022795,
"renderedFrames": 422,
"droppedMetricReports": 0,
"callbackFPS": 59.64400875653659,
"intervalP95Ms": 18.734042,
"intervalP99Ms": 20.838834,
"frameP50Ms": 9.983466,
"frameP95Ms": 21.197031,
"frameP99Ms": 24.923955,
"maxFrameMs": 26.558957,
"framesOverBudget": 170,
"framesOver50Ms": 0,
"layoutP95Ms": 0.023834,
"drawP95Ms": 0.680375,
"syncP95Ms": 0.290875,
"commandP95Ms": 6.16825,
"scenario": "plain",
"repetition": 1,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 300,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 7.887618088,
"renderedFrames": 429,
"droppedMetricReports": 0,
"callbackFPS": 59.84062548845861,
"intervalP95Ms": 18.211416,
"intervalP99Ms": 19.981041,
"frameP50Ms": 4.245264,
"frameP95Ms": 18.872012,
"frameP99Ms": 20.071473,
"maxFrameMs": 25.641215,
"framesOverBudget": 52,
"framesOver50Ms": 0,
"layoutP95Ms": 0.022625,
"drawP95Ms": 0.458833,
"syncP95Ms": 0.273084,
"commandP95Ms": 4.452875,
"scenario": "plain",
"repetition": 2,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 299,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 7.726755004,
"renderedFrames": 417,
"droppedMetricReports": 0,
"callbackFPS": 59.92166177914446,
"intervalP95Ms": 17.461167,
"intervalP99Ms": 18.055583,
"frameP50Ms": 3.304843,
"frameP95Ms": 6.611054,
"frameP99Ms": 8.186051,
"maxFrameMs": 9.472386,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.022125,
"drawP95Ms": 0.3515,
"syncP95Ms": 0.168458,
"commandP95Ms": 2.5015,
"scenario": "plain",
"repetition": 3,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 300,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.539590254,
"renderedFrames": 455,
"droppedMetricReports": 0,
"callbackFPS": 59.95603826075564,
"intervalP95Ms": 18.284333,
"intervalP99Ms": 19.115208,
"frameP50Ms": 5.240936,
"frameP95Ms": 15.859952,
"frameP99Ms": 20.015873,
"maxFrameMs": 24.225953,
"framesOverBudget": 22,
"framesOver50Ms": 0,
"layoutP95Ms": 0.023167,
"drawP95Ms": 0.502042,
"syncP95Ms": 0.219167,
"commandP95Ms": 4.361166,
"scenario": "rich",
"repetition": 1,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.369519296,
"renderedFrames": 451,
"droppedMetricReports": 0,
"callbackFPS": 59.979549869718106,
"intervalP95Ms": 17.376667,
"intervalP99Ms": 18.051208,
"frameP50Ms": 2.934591,
"frameP95Ms": 4.012565,
"frameP99Ms": 4.807358,
"maxFrameMs": 10.3425,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.029916,
"drawP95Ms": 0.301125,
"syncP95Ms": 0.127125,
"commandP95Ms": 1.164917,
"scenario": "rich",
"repetition": 2,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.366350629,
"renderedFrames": 442,
"droppedMetricReports": 0,
"callbackFPS": 59.882740063917545,
"intervalP95Ms": 17.464,
"intervalP99Ms": 18.587,
"frameP50Ms": 2.786237,
"frameP95Ms": 6.542831,
"frameP99Ms": 8.432788,
"maxFrameMs": 11.518333,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.022417,
"drawP95Ms": 0.327708,
"syncP95Ms": 0.125583,
"commandP95Ms": 2.325875,
"scenario": "rich",
"repetition": 3,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.41502617,
"renderedFrames": 464,
"droppedMetricReports": 0,
"callbackFPS": 59.89286186616814,
"intervalP95Ms": 17.507708,
"intervalP99Ms": 18.235667,
"frameP50Ms": 3.055929,
"frameP95Ms": 4.251485,
"frameP99Ms": 5.733354,
"maxFrameMs": 6.476235,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.026958,
"drawP95Ms": 0.346625,
"syncP95Ms": 0.156792,
"commandP95Ms": 1.123,
"scenario": "rich-updates",
"repetition": 1,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.372501546,
"renderedFrames": 459,
"droppedMetricReports": 0,
"callbackFPS": 59.95818540515322,
"intervalP95Ms": 17.691291,
"intervalP99Ms": 18.335875,
"frameP50Ms": 2.994677,
"frameP95Ms": 4.748361,
"frameP99Ms": 5.958596,
"maxFrameMs": 7.755706,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.028125,
"drawP95Ms": 0.364417,
"syncP95Ms": 0.100333,
"commandP95Ms": 1.177542,
"scenario": "rich-updates",
"repetition": 2,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.502337962,
"renderedFrames": 462,
"droppedMetricReports": 0,
"callbackFPS": 59.86588656848313,
"intervalP95Ms": 17.554167,
"intervalP99Ms": 18.490667,
"frameP50Ms": 3.077598,
"frameP95Ms": 4.589082,
"frameP99Ms": 6.029918,
"maxFrameMs": 6.521495,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.026375,
"drawP95Ms": 0.35675,
"syncP95Ms": 0.164291,
"commandP95Ms": 1.154916,
"scenario": "rich-updates",
"repetition": 3,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
}
],
"androidFullTrace": [
{
"refreshRateHz": 60.000003814697266,
"seconds": 7.692077254,
"renderedFrames": 410,
"droppedMetricReports": 0,
"callbackFPS": 59.93179537559543,
"intervalP95Ms": 18.694542,
"intervalP99Ms": 20.2185,
"frameP50Ms": 5.230116,
"frameP95Ms": 20.327645,
"frameP99Ms": 23.216959,
"maxFrameMs": 30.580917,
"framesOverBudget": 42,
"framesOver50Ms": 0,
"layoutP95Ms": 0.022667,
"drawP95Ms": 0.618,
"syncP95Ms": 0.21975,
"commandP95Ms": 5.294416,
"scenario": "plain",
"repetition": 1,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 300,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 7.790823212,
"renderedFrames": 422,
"droppedMetricReports": 0,
"callbackFPS": 59.942317684823365,
"intervalP95Ms": 17.890083,
"intervalP99Ms": 20.040209,
"frameP50Ms": 3.160776,
"frameP95Ms": 5.993897,
"frameP99Ms": 7.795049,
"maxFrameMs": 10.096599,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.022292,
"drawP95Ms": 0.242917,
"syncP95Ms": 0.178375,
"commandP95Ms": 1.804792,
"scenario": "plain",
"repetition": 2,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 300,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 7.621035503,
"renderedFrames": 410,
"droppedMetricReports": 0,
"callbackFPS": 59.965604388026165,
"intervalP95Ms": 18.182667,
"intervalP99Ms": 20.724708,
"frameP50Ms": 3.34378,
"frameP95Ms": 4.90068,
"frameP99Ms": 7.287083,
"maxFrameMs": 9.513561,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.029583,
"drawP95Ms": 0.264958,
"syncP95Ms": 0.099,
"commandP95Ms": 1.301125,
"scenario": "plain",
"repetition": 3,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 300,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 9.076300046,
"renderedFrames": 455,
"droppedMetricReports": 0,
"callbackFPS": 55.96994341586137,
"intervalP95Ms": 17.803041,
"intervalP99Ms": 18.464791,
"frameP50Ms": 4.175141,
"frameP95Ms": 14.092492,
"frameP99Ms": 18.750969,
"maxFrameMs": 641.792166,
"framesOverBudget": 22,
"framesOver50Ms": 2,
"layoutP95Ms": 0.028458,
"drawP95Ms": 0.402959,
"syncP95Ms": 0.214375,
"commandP95Ms": 2.538,
"scenario": "rich",
"repetition": 1,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 9.305935004,
"renderedFrames": 436,
"droppedMetricReports": 0,
"callbackFPS": 56.093235099495864,
"intervalP95Ms": 26.968625,
"intervalP99Ms": 44.132583,
"frameP50Ms": 4.864324,
"frameP95Ms": 59.356915,
"frameP99Ms": 115.575303,
"maxFrameMs": 150.252472,
"framesOverBudget": 137,
"framesOver50Ms": 40,
"layoutP95Ms": 0.0685,
"drawP95Ms": 1.665458,
"syncP95Ms": 0.604208,
"commandP95Ms": 21.301041,
"scenario": "rich",
"repetition": 2,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.542659296,
"renderedFrames": 457,
"droppedMetricReports": 0,
"callbackFPS": 59.81743884357764,
"intervalP95Ms": 17.966333,
"intervalP99Ms": 19.7025,
"frameP50Ms": 3.801933,
"frameP95Ms": 6.372749,
"frameP99Ms": 10.270121,
"maxFrameMs": 19.651056,
"framesOverBudget": 3,
"framesOver50Ms": 0,
"layoutP95Ms": 0.01875,
"drawP95Ms": 0.386041,
"syncP95Ms": 0.17,
"commandP95Ms": 2.31175,
"scenario": "rich",
"repetition": 3,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.407709546,
"renderedFrames": 460,
"droppedMetricReports": 0,
"callbackFPS": 59.94498230969217,
"intervalP95Ms": 18.114,
"intervalP99Ms": 19.984584,
"frameP50Ms": 4.402626,
"frameP95Ms": 7.35523,
"frameP99Ms": 8.880018,
"maxFrameMs": 10.238218,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.019958,
"drawP95Ms": 0.48925,
"syncP95Ms": 0.1755,
"commandP95Ms": 2.354541,
"scenario": "rich-updates",
"repetition": 1,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.188906837,
"renderedFrames": 447,
"droppedMetricReports": 0,
"callbackFPS": 59.83704659894643,
"intervalP95Ms": 17.995917,
"intervalP99Ms": 19.706625,
"frameP50Ms": 4.082474,
"frameP95Ms": 5.866943,
"frameP99Ms": 8.565051,
"maxFrameMs": 11.024602,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.020459,
"drawP95Ms": 0.402041,
"syncP95Ms": 0.163666,
"commandP95Ms": 1.76975,
"scenario": "rich-updates",
"repetition": 2,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 9.780545754,
"renderedFrames": 438,
"droppedMetricReports": 0,
"callbackFPS": 49.58823486937291,
"intervalP95Ms": 18.504333,
"intervalP99Ms": 51.028167,
"frameP50Ms": 3.471694,
"frameP95Ms": 28.938498,
"frameP99Ms": 402.628,
"maxFrameMs": 688.14682,
"framesOverBudget": 35,
"framesOver50Ms": 11,
"layoutP95Ms": 0.036708,
"drawP95Ms": 0.560584,
"syncP95Ms": 0.181333,
"commandP95Ms": 2.614959,
"scenario": "rich-updates",
"repetition": 3,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
}
],
"androidFullPresent": [
{
"phase": "HapiScroll:plain:1",
"gestures": "8",
"presented_frames": "251",
"present_cadence_fps": "59.390000",
"present_p50_ms": "16.640000",
"present_p95_ms": "24.900000",
"present_p99_ms": "32.910000",
"app_late_finish": "6",
"app_deadline_missed": "3"
},
{
"phase": "HapiScroll:plain:2",
"gestures": "8",
"presented_frames": "249",
"present_cadence_fps": "59.950000",
"present_p50_ms": "16.630000",
"present_p95_ms": "19.210000",
"present_p99_ms": "20.180000",
"app_late_finish": "0",
"app_deadline_missed": "0"
},
{
"phase": "HapiScroll:plain:3",
"gestures": "8",
"presented_frames": "250",
"present_cadence_fps": "60.120000",
"present_p50_ms": "16.640000",
"present_p95_ms": "18.100000",
"present_p99_ms": "20.050000",
"app_late_finish": "0",
"app_deadline_missed": "0"
},
{
"phase": "HapiScroll:rich-updates:1",
"gestures": "8",
"presented_frames": "247",
"present_cadence_fps": "59.780000",
"present_p50_ms": "16.670000",
"present_p95_ms": "19.410000",
"present_p99_ms": "20.680000",
"app_late_finish": "0",
"app_deadline_missed": "0"
},
{
"phase": "HapiScroll:rich-updates:2",
"gestures": "8",
"presented_frames": "248",
"present_cadence_fps": "59.600000",
"present_p50_ms": "16.700000",
"present_p95_ms": "18.380000",
"present_p99_ms": "22.260000",
"app_late_finish": "0",
"app_deadline_missed": "0"
},
{
"phase": "HapiScroll:rich-updates:3",
"gestures": "8",
"presented_frames": "250",
"present_cadence_fps": "47.580000",
"present_p50_ms": "16.580000",
"present_p95_ms": "21.210000",
"present_p99_ms": "126.840000",
"app_late_finish": "4",
"app_deadline_missed": "4"
},
{
"phase": "HapiScroll:rich:1",
"gestures": "8",
"presented_frames": "243",
"present_cadence_fps": "51.660000",
"present_p50_ms": "16.720000",
"present_p95_ms": "19.020000",
"present_p99_ms": "23.500000",
"app_late_finish": "1",
"app_deadline_missed": "1"
},
{
"phase": "HapiScroll:rich:2",
"gestures": "8",
"presented_frames": "243",
"present_cadence_fps": "49.550000",
"present_p50_ms": "16.950000",
"present_p95_ms": "40.230000",
"present_p99_ms": "49.940000",
"app_late_finish": "37",
"app_deadline_missed": "37"
},
{
"phase": "HapiScroll:rich:3",
"gestures": "8",
"presented_frames": "243",
"present_cadence_fps": "60.130000",
"present_p50_ms": "16.630000",
"present_p95_ms": "19.450000",
"present_p99_ms": "21.200000",
"app_late_finish": "1",
"app_deadline_missed": "1"
}
],
"androidControlled": [
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.302935129,
"renderedFrames": 446,
"droppedMetricReports": 0,
"callbackFPS": 59.97878970059818,
"intervalP95Ms": 18.305042,
"intervalP99Ms": 19.135625,
"frameP50Ms": 3.096805,
"frameP95Ms": 18.344605,
"frameP99Ms": 19.594523,
"maxFrameMs": 21.201661,
"framesOverBudget": 53,
"framesOver50Ms": 0,
"layoutP95Ms": 0.046,
"drawP95Ms": 0.416792,
"syncP95Ms": 0.077542,
"commandP95Ms": 1.097875,
"scenario": "plain",
"repetition": 1,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 299,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 7.808233504,
"renderedFrames": 421,
"droppedMetricReports": 0,
"callbackFPS": 59.93673213797372,
"intervalP95Ms": 18.263125,
"intervalP99Ms": 19.968042,
"frameP50Ms": 2.983799,
"frameP95Ms": 5.02079,
"frameP99Ms": 6.332286,
"maxFrameMs": 7.453886,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.024792,
"drawP95Ms": 0.220083,
"syncP95Ms": 0.098291,
"commandP95Ms": 1.166375,
"scenario": "plain",
"repetition": 2,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 300,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.165651837,
"renderedFrames": 441,
"droppedMetricReports": 0,
"callbackFPS": 59.76252842287329,
"intervalP95Ms": 17.716459,
"intervalP99Ms": 18.685542,
"frameP50Ms": 2.886752,
"frameP95Ms": 4.227977,
"frameP99Ms": 5.153542,
"maxFrameMs": 7.713967,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.026084,
"drawP95Ms": 0.224875,
"syncP95Ms": 0.123209,
"commandP95Ms": 1.224459,
"scenario": "plain",
"repetition": 3,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 299,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.363113879,
"renderedFrames": 449,
"droppedMetricReports": 0,
"callbackFPS": 59.90591629488918,
"intervalP95Ms": 17.923625,
"intervalP99Ms": 18.872125,
"frameP50Ms": 3.009076,
"frameP95Ms": 4.677595,
"frameP99Ms": 6.093391,
"maxFrameMs": 7.714561,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.024875,
"drawP95Ms": 0.354333,
"syncP95Ms": 0.132167,
"commandP95Ms": 1.226916,
"scenario": "rich",
"repetition": 1,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.303201004,
"renderedFrames": 446,
"droppedMetricReports": 0,
"callbackFPS": 59.85643365258462,
"intervalP95Ms": 18.13325,
"intervalP99Ms": 19.423291,
"frameP50Ms": 3.02533,
"frameP95Ms": 5.017462,
"frameP99Ms": 5.870265,
"maxFrameMs": 6.96109,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.024209,
"drawP95Ms": 0.314083,
"syncP95Ms": 0.122,
"commandP95Ms": 1.277709,
"scenario": "rich",
"repetition": 2,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.490963713,
"renderedFrames": 453,
"droppedMetricReports": 0,
"callbackFPS": 59.946081175768185,
"intervalP95Ms": 17.921875,
"intervalP99Ms": 19.711333,
"frameP50Ms": 3.045132,
"frameP95Ms": 4.868426,
"frameP99Ms": 6.473459,
"maxFrameMs": 9.665024,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.023375,
"drawP95Ms": 0.315875,
"syncP95Ms": 0.118541,
"commandP95Ms": 1.326208,
"scenario": "rich",
"repetition": 3,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.640686171,
"renderedFrames": 472,
"droppedMetricReports": 0,
"callbackFPS": 59.94894268218181,
"intervalP95Ms": 18.205292,
"intervalP99Ms": 19.878041,
"frameP50Ms": 3.214469,
"frameP95Ms": 5.190686,
"frameP99Ms": 6.666866,
"maxFrameMs": 7.691038,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.025583,
"drawP95Ms": 0.33125,
"syncP95Ms": 0.088375,
"commandP95Ms": 1.219833,
"scenario": "rich-updates",
"repetition": 1,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.555092546,
"renderedFrames": 464,
"droppedMetricReports": 0,
"callbackFPS": 59.96428410816633,
"intervalP95Ms": 18.055708,
"intervalP99Ms": 19.1395,
"frameP50Ms": 3.143474,
"frameP95Ms": 5.338377,
"frameP99Ms": 6.545578,
"maxFrameMs": 7.721652,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.024833,
"drawP95Ms": 0.323083,
"syncP95Ms": 0.084416,
"commandP95Ms": 1.238208,
"scenario": "rich-updates",
"repetition": 2,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
},
{
"refreshRateHz": 60.000003814697266,
"seconds": 8.42015742,
"renderedFrames": 460,
"droppedMetricReports": 0,
"callbackFPS": 59.975125738207396,
"intervalP95Ms": 17.671167,
"intervalP99Ms": 18.529792,
"frameP50Ms": 3.042369,
"frameP95Ms": 4.527647,
"frameP99Ms": 6.027186,
"maxFrameMs": 7.06432,
"framesOverBudget": 0,
"framesOver50Ms": 0,
"layoutP95Ms": 0.024958,
"drawP95Ms": 0.298,
"syncP95Ms": 0.12625,
"commandP95Ms": 1.205959,
"scenario": "rich-updates",
"repetition": 3,
"rows": 800,
"viewportWidthPx": 1080,
"viewportHeightPx": 1920,
"startIndex": 350,
"endIndex": 335,
"api": 35,
"metric": "window-frame-metrics-and-choreographer-not-presented-fps"
}
],
"androidControlledPresent": [
{
"phase": "HapiScroll:plain:1",
"gestures": "8",
"presented_frames": "245",
"present_cadence_fps": "60.130000",
"present_p50_ms": "16.680000",
"present_p95_ms": "18.400000",
"present_p99_ms": "20.050000",
"app_late_finish": "1",
"app_deadline_missed": "1"
},
{
"phase": "HapiScroll:plain:2",
"gestures": "8",
"presented_frames": "249",
"present_cadence_fps": "60.040000",
"present_p50_ms": "16.690000",
"present_p95_ms": "18.620000",
"present_p99_ms": "20.360000",
"app_late_finish": "0",
"app_deadline_missed": "0"
},
{
"phase": "HapiScroll:plain:3",
"gestures": "8",
"presented_frames": "247",
"present_cadence_fps": "60.130000",
"present_p50_ms": "16.670000",
"present_p95_ms": "17.870000",
"present_p99_ms": "18.750000",
"app_late_finish": "0",
"app_deadline_missed": "0"
},
{
"phase": "HapiScroll:rich-updates:1",
"gestures": "8",
"presented_frames": "247",
"present_cadence_fps": "59.320000",
"present_p50_ms": "16.680000",
"present_p95_ms": "18.970000",
"present_p99_ms": "27.120000",
"app_late_finish": "0",
"app_deadline_missed": "0"
},
{
"phase": "HapiScroll:rich-updates:2",
"gestures": "8",
"presented_frames": "243",
"present_cadence_fps": "59.750000",
"present_p50_ms": "16.630000",
"present_p95_ms": "18.750000",
"present_p99_ms": "19.700000",
"app_late_finish": "0",
"app_deadline_missed": "0"
},
{
"phase": "HapiScroll:rich-updates:3",
"gestures": "8",
"presented_frames": "244",
"present_cadence_fps": "59.640000",
"present_p50_ms": "16.630000",
"present_p95_ms": "18.030000",
"present_p99_ms": "19.640000",
"app_late_finish": "0",
"app_deadline_missed": "0"
},
{
"phase": "HapiScroll:rich:1",
"gestures": "8",
"presented_frames": "244",
"present_cadence_fps": "60.050000",
"present_p50_ms": "16.630000",
"present_p95_ms": "18.380000",
"present_p99_ms": "19.590000",
"app_late_finish": "0",
"app_deadline_missed": "0"
},
{
"phase": "HapiScroll:rich:2",
"gestures": "8",
"presented_frames": "247",
"present_cadence_fps": "60.020000",
"present_p50_ms": "16.690000",
"present_p95_ms": "18.610000",
"present_p99_ms": "19.600000",
"app_late_finish": "0",
"app_deadline_missed": "0"
},
{
"phase": "HapiScroll:rich:3",
"gestures": "8",
"presented_frames": "243",
"present_cadence_fps": "60.000000",
"present_p50_ms": "16.640000",
"present_p95_ms": "18.660000",
"present_p99_ms": "20.130000",
"app_late_finish": "0",
"app_deadline_missed": "0"
}
],
"androidControlledSchedulerSlices": 495548,
"rawArtifactPrefix": "/tmp/hapi-scroll-frame-",
"iosDifferentialRefresh": {
"implementation": "Retain UIHostingConfiguration roots; observable row builder and full representable environment; only changed data/width requests diffable reconfiguration.",
"harnessChanges": "Added pre-timing rendered screenshot and initialVisibleHeights assertion. Compare only with the same-harness baseline control, not directly with the earlier baseline.",
"baselineControl": [
{
"callbackFPS": 59.838603236325454,
"callbacks": 360,
"distancePoints": 10799,
"initialVisibleHeights": [
36,
36,
54,
54,
71.66666666666667,
71.66666666666667,
71.66666666666667,
89.66666666666667,
89.66666666666667,
89.66666666666667
],
"intervalP50Ms": 16.66650001425296,
"intervalP95Ms": 16.67816666304134,
"intervalP99Ms": 16.684125002939254,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.1304999999702,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.17479166854172945,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "plain",
"seconds": 6.0161832083249465,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.833075302972695,
"callbacks": 359,
"distancePoints": 10770,
"initialVisibleHeights": [
36,
36,
54,
54,
71.66666666666667,
71.66666666666667,
71.66666666666667,
89.66666666666667,
89.66666666666667,
89.66666666666667
],
"intervalP50Ms": 16.66683334042318,
"intervalP95Ms": 16.692583332769573,
"intervalP99Ms": 16.712999989977106,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.19808331434615,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.27529167709872127,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "plain",
"seconds": 6.000025875022402,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.833289289532615,
"callbacks": 359,
"distancePoints": 10770,
"initialVisibleHeights": [
36,
36,
54,
54,
71.66666666666667,
71.66666666666667,
71.66666666666667,
89.66666666666667,
89.66666666666667,
89.66666666666667
],
"intervalP50Ms": 16.66658333851956,
"intervalP95Ms": 16.678208339726552,
"intervalP99Ms": 16.689708310877904,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.23645834461786,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.15308332513086498,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "plain",
"seconds": 6.000004416651791,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.83987265622547,
"callbacks": 360,
"distancePoints": 10799,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.66658333851956,
"intervalP95Ms": 16.678791667800397,
"intervalP99Ms": 16.7032916797325,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 32.80400001676753,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.14666665811091661,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "rich",
"seconds": 6.016055583342677,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.501851496453405,
"callbacks": 358,
"distancePoints": 10800,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.667208343278617,
"intervalP95Ms": 16.695375001290813,
"intervalP99Ms": 17.208875011419877,
"intervalsOver25Ms": 3,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.236000017495826,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.2795833279378712,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "rich",
"seconds": 6.016619500005618,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.83438009801074,
"callbacks": 360,
"distancePoints": 10800,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.666458337567747,
"intervalP95Ms": 16.682624991517514,
"intervalP99Ms": 16.695250000339,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.30883334274404,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.1441249914932996,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "rich",
"seconds": 6.0166078333277255,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 58.83662173330803,
"callbacks": 354,
"distancePoints": 10800,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.666666662786156,
"intervalP95Ms": 16.689791664248332,
"intervalP99Ms": 33.32570835482329,
"intervalsOver25Ms": 7,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.36604166543111,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.7088333077263087,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.016660875000525,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 58.836684481636496,
"callbacks": 354,
"distancePoints": 10800,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.666541661834344,
"intervalP95Ms": 16.695708327461034,
"intervalP99Ms": 33.33137498702854,
"intervalsOver25Ms": 7,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.34479164914228,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.7620416581630707,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.016654458333505,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 55.9999984443421,
"callbacks": 336,
"distancePoints": 10770,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.668458352796733,
"intervalP95Ms": 33.30104169435799,
"intervalP99Ms": 33.35312500712462,
"intervalsOver25Ms": 24,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.36624999064952,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.8560833521187305,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.000000166677637,
"viewportHeight": 759,
"viewportWidth": 393
}
],
"optimizedFirst": [
{
"callbackFPS": 59.833255217776966,
"callbacks": 359,
"distancePoints": 10770,
"initialVisibleHeights": [
36,
36,
54,
54,
71.66666666666667,
71.66666666666667,
71.66666666666667,
89.66666666666667,
89.66666666666667,
89.66666666666667
],
"intervalP50Ms": 16.666624986100942,
"intervalP95Ms": 16.679208318237215,
"intervalP99Ms": 16.693541692802683,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.229874999960884,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.13220831169746816,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "plain",
"seconds": 6.000007833325071,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.83948266572789,
"callbacks": 360,
"distancePoints": 10799,
"initialVisibleHeights": [
36,
36,
54,
54,
71.66666666666667,
71.66666666666667,
71.66666666666667,
89.66666666666667,
89.66666666666667,
89.66666666666667
],
"intervalP50Ms": 16.66691666468978,
"intervalP95Ms": 16.696125007001683,
"intervalP99Ms": 16.72020831028931,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 32.92229166254401,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.32645833562128246,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "plain",
"seconds": 6.0160947916447185,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.83991575883514,
"callbacks": 360,
"distancePoints": 10799,
"initialVisibleHeights": [
36,
36,
54,
54,
71.66666666666667,
71.66666666666667,
71.66666666666667,
89.66666666666667,
89.66666666666667,
89.66666666666667
],
"intervalP50Ms": 16.666624986100942,
"intervalP95Ms": 16.67625000118278,
"intervalP99Ms": 16.695750004146248,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 32.726625009672716,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.19091664580628276,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "plain",
"seconds": 6.016051249986049,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.83688672459432,
"callbacks": 360,
"distancePoints": 10799.333333333336,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.666791663737968,
"intervalP95Ms": 16.680041648214683,
"intervalP99Ms": 16.957791667664424,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.23870833264664,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.2045833389274776,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "rich",
"seconds": 6.016355791653041,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 58.999980743296796,
"callbacks": 354,
"distancePoints": 10770,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.666541690938175,
"intervalP95Ms": 17.271083313971758,
"intervalP99Ms": 32.73558331420645,
"intervalsOver25Ms": 6,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.34137500496581,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.4137916548643261,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "rich",
"seconds": 6.00000195830944,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.16905825013408,
"callbacks": 356,
"distancePoints": 10800,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.668166645104066,
"intervalP95Ms": 17.013166652759537,
"intervalP99Ms": 29.368374991463497,
"intervalsOver25Ms": 5,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.32741666235961,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.3776666708290577,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "rich",
"seconds": 6.016658208332956,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.17493805074361,
"callbacks": 356,
"distancePoints": 10799,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.666541661834344,
"intervalP95Ms": 16.688833333319053,
"intervalP99Ms": 32.716958317905664,
"intervalsOver25Ms": 5,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 32.8319999971427,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.30941664590500295,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.016060374997323,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.175078626231695,
"callbacks": 356,
"distancePoints": 10799,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.666041658027098,
"intervalP95Ms": 16.686249990016222,
"intervalP99Ms": 32.71937498357147,
"intervalsOver25Ms": 5,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 32.82379166921601,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.310541654471308,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.016046083328547,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 58.999768098180425,
"callbacks": 354,
"distancePoints": 10770,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.666958341374993,
"intervalP95Ms": 16.687124996678904,
"intervalP99Ms": 32.73108333814889,
"intervalsOver25Ms": 6,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.353541657561436,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.3126666706521064,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.000023583328584,
"viewportHeight": 759,
"viewportWidth": 393
}
],
"artifactPaths": [
"/tmp/hapi-scroll-live-environment.xcresult",
"/tmp/hapi-scroll-baseline-control.xcresult",
"/tmp/hapi-scroll-live-environment-repeat.xcresult"
],
"measurementCaveat": "Display-link callback cadence, not compositor-presented FPS. Static rich-content benefit not established; Simulator variation remains.",
"optimizedRepeat": [
{
"callbackFPS": 59.835430128999235,
"callbacks": 360,
"distancePoints": 10799.666666666664,
"initialVisibleHeights": [
36,
36,
54,
54,
71.66666666666667,
71.66666666666667,
71.66666666666667,
89.66666666666667,
89.66666666666667,
89.66666666666667
],
"intervalP50Ms": 16.666791663737968,
"intervalP95Ms": 16.67645832640119,
"intervalP99Ms": 16.678958316333592,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.34520832868293,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.12779165990650654,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "plain",
"seconds": 6.016502249985933,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.83450813858699,
"callbacks": 360,
"distancePoints": 10800,
"initialVisibleHeights": [
36,
36,
54,
54,
71.66666666666667,
71.66666666666667,
71.66666666666667,
89.66666666666667,
89.66666666666667,
89.66666666666667
],
"intervalP50Ms": 16.666583309415728,
"intervalP95Ms": 16.676625004038215,
"intervalP99Ms": 16.681000008247793,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.35387498373166,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.1788749941624701,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "plain",
"seconds": 6.016594958317,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.83959290690969,
"callbacks": 360,
"distancePoints": 10799,
"initialVisibleHeights": [
36,
36,
54,
54,
71.66666666666667,
71.66666666666667,
71.66666666666667,
89.66666666666667,
89.66666666666667,
89.66666666666667
],
"intervalP50Ms": 16.66670831036754,
"intervalP95Ms": 16.680375003488734,
"intervalP99Ms": 16.9588333228603,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 32.75404166197404,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.16408335068263113,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "plain",
"seconds": 6.016083708324004,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.668155304974995,
"callbacks": 359,
"distancePoints": 10800,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.66658333851956,
"intervalP95Ms": 16.696250007953495,
"intervalP99Ms": 17.16387498890981,
"intervalsOver25Ms": 2,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.35012501338497,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.33845833968371153,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "rich",
"seconds": 6.0166096666653175,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 58.8367121885632,
"callbacks": 354,
"distancePoints": 10800,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.66629165993072,
"intervalP95Ms": 17.3813333385624,
"intervalP99Ms": 32.64641665737145,
"intervalsOver25Ms": 7,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.30391668714583,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.3699999942909926,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "rich",
"seconds": 6.016651625017403,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.839683255364115,
"callbacks": 360,
"distancePoints": 10799,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.666750016156584,
"intervalP95Ms": 16.680083354003727,
"intervalP99Ms": 16.686499991919845,
"intervalsOver25Ms": 1,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 32.732833322370425,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.14704166096635163,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "rich",
"seconds": 6.016074624989415,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 59.17499460858117,
"callbacks": 356,
"distancePoints": 10799,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.666125011397526,
"intervalP95Ms": 16.683499998180196,
"intervalP99Ms": 32.73041668580845,
"intervalsOver25Ms": 5,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.348708326229826,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.3216666809748858,
"os": "26.5",
"repetition": 1,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.016054625011748,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 58.999900847301625,
"callbacks": 354,
"distancePoints": 10770,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.666458337567747,
"intervalP95Ms": 16.6927500104066,
"intervalP99Ms": 32.73458333569579,
"intervalsOver25Ms": 6,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.35904167033732,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.30879167024977505,
"os": "26.5",
"repetition": 2,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.000010083342204,
"viewportHeight": 759,
"viewportWidth": 393
},
{
"callbackFPS": 58.999851680753,
"callbacks": 354,
"distancePoints": 10770,
"initialVisibleHeights": [
145,
237.33333333333334,
330.3333333333333,
333.3333333333333
],
"intervalP50Ms": 16.666791663737968,
"intervalP95Ms": 16.691750002792105,
"intervalP99Ms": 32.72487499634735,
"intervalsOver25Ms": 6,
"intervalsOver50Ms": 0,
"maximumFramesPerSecond": 60,
"maxIntervalMs": 33.3505000162404,
"metric": "display-link-callback-cadence-not-presented-fps",
"offsetUpdateMaxMs": 0.3138750034850091,
"os": "26.5",
"repetition": 3,
"rows": 800,
"scenario": "rich-updates",
"seconds": 6.0000150833511725,
"viewportHeight": 759,
"viewportWidth": 393
}
],
"runOrder": [
"optimizedFirst",
"baselineControl",
"optimizedRepeat"
],
"correctness": {
"debug": "14 tests passed, including zero-configuration work budgets.",
"release": "13 tests passed in each optimized batch, including the opt-in frame profile.",
"debugElapsedCaveat": "One geometry integration test elapsed about 650 seconds during host sleep, confirmed by local pmset events (13:16-13:27). Not a frame timing result; the Release counterpart took about 0.33 seconds."
}
}
}