Skip to content

Performance pass with Instruments #47

@ryanabooth

Description

@ryanabooth

Profile the hot paths and catch any quadratic surprises before launch.

Targets

SpriteKit

  • Time Profiler during heavy farm scene activity: multiple plots animating + ambient NPCs (butterflies, birds, avatar wandering, pet wandering)
  • Confirm 60fps on iPhone 12-era devices, 120fps on Pro devices
  • Identify any retain cycles or main-thread blockers

SwiftData

  • Seed an in-memory store with 1000+ HabitLogEntry rows, 100+ Task rows, 20+ Goal rows with SubGoals
  • Time Profiler the daily tick (SystemEventsHandler.runDailyTick) — should be well under 100ms
  • Time Profiler the Stats screen queries (depends on Stats / Insights screen #31) — should not block the UI thread
  • Profile QuestInteractor.candidatePool at large data volumes

Launch

  • App Launch instrument: cold launch under 1s on iPhone 12, under 500ms on Pro
  • No work done synchronously in AppEnvironment.bootstrap that should be deferred

Acceptance criteria

  • No frame drops below 60fps during normal farm-tab usage on supported devices
  • Daily tick runs under 100ms even with 1000+ entries
  • Cold launch under 1s on iPhone 12
  • Any findings documented + fixes filed as separate issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    blockedBlocked on external resourcesenhancementNew feature or requestphase-9App Store launch prep

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions