{
  "schemaVersion": 1,
  "product": "text-studio",
  "productName": "Text Studio",
  "candidateProvider": "TextStudio",
  "candidateLabel": "Text Studio",
  "qualification": {
    "id": "targeted-standard",
    "label": "Targeted Standard",
    "summary": "Selected matched workloads, each complete and healthy across three repetitions.",
    "disclosure": "Representative matched workloads where Text Studio leads. Results are scenario-specific and lower is better.",
    "coverageNote": "This snapshot covers selected workloads rather than the complete Performance Lab suite.",
    "publicationReady": false
  },
  "measuredAt": "2026-08-28T17:44:42.6597385Z",
  "environment": {
    "operatingSystem": "Windows 11  (10.0.26220)",
    "cpu": "13th Gen Intel(R) Core(TM) i9-13900K",
    "logicalProcessorCount": 32,
    "systemMemoryMegabytes": 65252,
    "gpu": "NVIDIA GeForce RTX 4090",
    "graphicsApi": "Direct3D11",
    "graphicsMemoryMegabytes": 24138,
    "unityVersion": "6000.3.22f1",
    "screenWidth": 1280,
    "screenHeight": 720,
    "qualityLevel": "Ultra",
    "vSyncCount": 0,
    "targetFrameRate": -1
  },
  "providerVersions": [
    {
      "provider": "TextStudio",
      "displayName": "Text Studio"
    },
    {
      "provider": "TextAnimator",
      "displayName": "Text Animator 3.14.2"
    },
    {
      "provider": "ProceduralTextAnimator",
      "displayName": "Procedural Text Animator 1.5.1"
    },
    {
      "provider": "TMPEffects",
      "displayName": "TMPEffects 0.3.2"
    },
    {
      "provider": "UIToolkitTextAnimation",
      "displayName": "UI Toolkit Text Animation 2.0.8"
    }
  ],
  "method": {
    "aggregation": "Median of three independent repetition medians.",
    "timing": "Clean optimized Windows player.",
    "memory": "One fresh development-player process per provider, with the first repetition cold and later repetitions warm.",
    "lowerIsBetter": true
  },
  "sourceHash": "13688c0a6d58c5ef4e7b1b3e43fb20decae8d028007d53b3c3866e1fe4ac6aeb",
  "cards": [
    {
      "id": "idle-500",
      "order": 1,
      "category": "CPU",
      "surface": "TextMeshPro",
      "title": "500 idle labels",
      "description": "A dense retained UI population with 500 idle TextMeshPro labels.",
      "metricLabel": "Rendered main thread",
      "candidateProvider": "TextStudio",
      "primaryReference": "TextAnimator",
      "headline": {
        "type": "ratio",
        "value": "9.2×",
        "label": "faster than Text Animator",
        "reference": "TextAnimator",
        "ratio": 9.157571,
        "percentLower": 89.080074
      },
      "supportingClaim": {
        "type": "percent",
        "value": "89%",
        "label": "lower main-thread time",
        "reference": "TextAnimator",
        "ratio": 9.157571,
        "percentLower": 89.080074
      },
      "rows": [
        {
          "provider": "TextStudio",
          "label": "Text Studio",
          "displayName": "Text Studio",
          "role": "candidate",
          "value": 0.4306,
          "displayValue": "0.431 ms",
          "relativeCost": 1,
          "candidateAdvantagePercent": 0,
          "sourceRunId": "20260828-170542-142-standard-idle-500",
          "repetitionMedians": [
            0.4306,
            0.4295,
            0.4386
          ]
        },
        {
          "provider": "TextAnimator",
          "label": "Text Animator",
          "displayName": "Text Animator 3.14.2",
          "role": "reference",
          "value": 3.94325,
          "displayValue": "3.943 ms",
          "relativeCost": 9.157571,
          "candidateAdvantagePercent": 89.080074,
          "sourceRunId": "20260828-170542-142-standard-idle-500",
          "repetitionMedians": [
            3.89845,
            3.94325,
            3.97505
          ]
        }
      ],
      "source": {
        "comparisonKey": "idle.500",
        "pass": "Rendered",
        "metric": "MainThreadMilliseconds",
        "rawUnit": "ms",
        "displayUnit": "ms",
        "repetitions": 3,
        "warmupFrames": 60,
        "measurementFrames": 240,
        "nativeScheduler": false,
        "targetFrameRate": -1,
        "evidence": [
          "optimized-player"
        ],
        "runIds": [
          "20260828-170542-142-standard-idle-500"
        ]
      }
    },
    {
      "id": "effects-stack-8",
      "order": 2,
      "category": "CPU",
      "surface": "TextMeshPro",
      "title": "8-effect stack",
      "description": "4,096 glyphs animated with Wave, Rainbow, Shake, Fade, Bounce, Rotate, Swing, and Wiggle.",
      "metricLabel": "Rendered main thread",
      "candidateProvider": "TextStudio",
      "primaryReference": "TextAnimator",
      "headline": {
        "type": "percent",
        "value": "29%",
        "label": "faster than Text Animator",
        "reference": "TextAnimator",
        "ratio": 1.415425,
        "percentLower": 29.349832
      },
      "supportingClaim": {
        "type": "ratio",
        "value": "4.7×",
        "label": "lower than TMPEffects",
        "reference": "TMPEffects",
        "ratio": 4.669084,
        "percentLower": 78.582521
      },
      "rows": [
        {
          "provider": "TextStudio",
          "label": "Text Studio",
          "displayName": "Text Studio",
          "role": "candidate",
          "value": 4.05585,
          "displayValue": "4.056 ms",
          "relativeCost": 1,
          "candidateAdvantagePercent": 0,
          "sourceRunId": "20260828-173544-251-standard-effects-stack-8",
          "repetitionMedians": [
            4.05305,
            4.0575,
            4.05585
          ]
        },
        {
          "provider": "TextAnimator",
          "label": "Text Animator",
          "displayName": "Text Animator 3.14.2",
          "role": "reference",
          "value": 5.74075,
          "displayValue": "5.741 ms",
          "relativeCost": 1.415425,
          "candidateAdvantagePercent": 29.349832,
          "sourceRunId": "20260828-173544-251-standard-effects-stack-8",
          "repetitionMedians": [
            5.81555,
            5.74075,
            5.715
          ]
        },
        {
          "provider": "ProceduralTextAnimator",
          "label": "Procedural Text Animator",
          "displayName": "Procedural Text Animator 1.5.1",
          "role": "reference",
          "value": 5.8308,
          "displayValue": "5.831 ms",
          "relativeCost": 1.437627,
          "candidateAdvantagePercent": 30.440943,
          "sourceRunId": "20260828-173544-251-standard-effects-stack-8",
          "repetitionMedians": [
            5.81575,
            5.8341,
            5.8308
          ]
        },
        {
          "provider": "TMPEffects",
          "label": "TMPEffects",
          "displayName": "TMPEffects 0.3.2",
          "role": "reference",
          "value": 18.9371,
          "displayValue": "18.937 ms",
          "relativeCost": 4.669084,
          "candidateAdvantagePercent": 78.582521,
          "sourceRunId": "20260828-173544-251-standard-effects-stack-8",
          "repetitionMedians": [
            18.9371,
            18.97235,
            18.87275
          ]
        }
      ],
      "source": {
        "comparisonKey": "effects.stack-8",
        "pass": "Rendered",
        "metric": "MainThreadMilliseconds",
        "rawUnit": "ms",
        "displayUnit": "ms",
        "repetitions": 3,
        "warmupFrames": 60,
        "measurementFrames": 240,
        "nativeScheduler": false,
        "targetFrameRate": -1,
        "evidence": [
          "optimized-player"
        ],
        "runIds": [
          "20260828-173544-251-standard-effects-stack-8"
        ]
      }
    },
    {
      "id": "uitoolkit-native-60hz",
      "order": 3,
      "category": "CPU",
      "surface": "UI Toolkit",
      "title": "Native UI Toolkit at 60 Hz",
      "description": "50 live UI Toolkit counters updating at 60 Hz through native schedulers.",
      "metricLabel": "Rendered main thread",
      "candidateProvider": "TextStudio",
      "primaryReference": "UIToolkitTextAnimation",
      "headline": {
        "type": "rank",
        "value": "Fastest",
        "label": "in the native UI Toolkit test"
      },
      "supportingClaim": {
        "type": "percent",
        "value": "43%",
        "label": "faster than Text Animator",
        "reference": "TextAnimator",
        "ratio": 1.744475,
        "percentLower": 42.676165
      },
      "rows": [
        {
          "provider": "TextStudio",
          "label": "Text Studio",
          "displayName": "Text Studio",
          "role": "candidate",
          "value": 1.7059,
          "displayValue": "1.706 ms",
          "relativeCost": 1,
          "candidateAdvantagePercent": 0,
          "sourceRunId": "20260828-174352-398-standard-dynamic-uitoolkit-counter-60hz-native-scheduler",
          "repetitionMedians": [
            1.7424,
            1.7059,
            1.6173
          ]
        },
        {
          "provider": "UIToolkitTextAnimation",
          "label": "UI Toolkit Text Animation",
          "displayName": "UI Toolkit Text Animation 2.0.8",
          "role": "reference",
          "value": 1.7366,
          "displayValue": "1.737 ms",
          "relativeCost": 1.017996,
          "candidateAdvantagePercent": 1.767822,
          "sourceRunId": "20260828-174352-398-standard-dynamic-uitoolkit-counter-60hz-native-scheduler",
          "repetitionMedians": [
            1.72205,
            1.8018,
            1.7366
          ]
        },
        {
          "provider": "TextAnimator",
          "label": "Text Animator",
          "displayName": "Text Animator 3.14.2",
          "role": "reference",
          "value": 2.9759,
          "displayValue": "2.976 ms",
          "relativeCost": 1.744475,
          "candidateAdvantagePercent": 42.676165,
          "sourceRunId": "20260828-174352-398-standard-dynamic-uitoolkit-counter-60hz-native-scheduler",
          "repetitionMedians": [
            2.9954,
            2.9689,
            2.9759
          ]
        }
      ],
      "source": {
        "comparisonKey": "dynamic.uitoolkit-counter-60hz.native-scheduler",
        "pass": "Rendered",
        "metric": "MainThreadMilliseconds",
        "rawUnit": "ms",
        "displayUnit": "ms",
        "repetitions": 3,
        "warmupFrames": 60,
        "measurementFrames": 240,
        "nativeScheduler": true,
        "targetFrameRate": 60,
        "evidence": [
          "optimized-player"
        ],
        "runIds": [
          "20260828-174352-398-standard-dynamic-uitoolkit-counter-60hz-native-scheduler"
        ]
      }
    },
    {
      "id": "uitoolkit-wave-gc",
      "order": 4,
      "category": "Memory",
      "surface": "UI Toolkit",
      "title": "UI Toolkit Wave GC",
      "description": "50 animated UI Toolkit labels running Wave in provider-isolated development players.",
      "metricLabel": "GC per measured frame",
      "candidateProvider": "TextStudio",
      "primaryReference": "TextAnimator",
      "headline": {
        "type": "ratio",
        "value": "12.3×",
        "label": "lower GC than Text Animator",
        "reference": "TextAnimator",
        "ratio": 12.261538,
        "percentLower": 91.844417
      },
      "supportingClaim": {
        "type": "ratio",
        "value": "2.5×",
        "label": "lower than UI Toolkit Text Animation",
        "reference": "UIToolkitTextAnimation",
        "ratio": 2.484615,
        "percentLower": 59.752322
      },
      "rows": [
        {
          "provider": "TextStudio",
          "label": "Text Studio",
          "displayName": "Text Studio",
          "role": "candidate",
          "value": 6500,
          "displayValue": "6.5 KB",
          "relativeCost": 1,
          "candidateAdvantagePercent": 0,
          "sourceRunId": "20260828-174254-501-standard-surface-uitoolkit-wave-memory-textstudio",
          "repetitionMedians": [
            6500,
            6500,
            6500
          ]
        },
        {
          "provider": "UIToolkitTextAnimation",
          "label": "UI Toolkit Text Animation",
          "displayName": "UI Toolkit Text Animation 2.0.8",
          "role": "reference",
          "value": 16150,
          "displayValue": "16.2 KB",
          "relativeCost": 2.484615,
          "candidateAdvantagePercent": 59.752322,
          "sourceRunId": "20260828-174309-012-standard-surface-uitoolkit-wave-memory-uitoolkittextanimation",
          "repetitionMedians": [
            16150,
            16150,
            16150
          ]
        },
        {
          "provider": "TextAnimator",
          "label": "Text Animator",
          "displayName": "Text Animator 3.14.2",
          "role": "reference",
          "value": 79700,
          "displayValue": "79.7 KB",
          "relativeCost": 12.261538,
          "candidateAdvantagePercent": 91.844417,
          "sourceRunId": "20260828-174301-719-standard-surface-uitoolkit-wave-memory-textanimator",
          "repetitionMedians": [
            79700,
            79700,
            79700
          ]
        }
      ],
      "source": {
        "comparisonKey": "surface.uitoolkit-wave",
        "pass": "Rendered",
        "metric": "GcAllocatedBytes",
        "rawUnit": "bytes",
        "displayUnit": "KB",
        "repetitions": 3,
        "warmupFrames": 60,
        "measurementFrames": 240,
        "nativeScheduler": false,
        "targetFrameRate": -1,
        "evidence": [
          "provider-isolated-memory"
        ],
        "runIds": [
          "20260828-174254-501-standard-surface-uitoolkit-wave-memory-textstudio",
          "20260828-174301-719-standard-surface-uitoolkit-wave-memory-textanimator",
          "20260828-174309-012-standard-surface-uitoolkit-wave-memory-uitoolkittextanimation"
        ]
      }
    }
  ]
}
