Asset Affinity · Unity Editor Extension

Performance Results

Benchmarks covering graph traversal, serialisation, physics simulation, and UI rendering. Tests were run on 2026-08-31 against realistic graph sizes and a separate stress scenario included for reference.

Test Machine
HostHP Omen 16
EngineUnity 2022.3.62f3
OSWindows 11 Home 64-bit
CPUAMD Ryzen AI 9 365 w/ Radeon 880M ∼2.0 GHz
RAM24 GB
GPUNVIDIA GeForce RTX 5070 Laptop GPU

Graph View. Usage Tiers

Three graph sizes representing shallow, mid-depth, and deep project graphs. Each measures data generation, JSON round-trip, BFS traversal, and edge-update throughput.

The BFS traversal runs when the graph is rebuilt. The graph rebuilds whenever the current context or graph settings change.

Tier 1. Shallow (cap=50, depth=2)

~2,551 nodes · 2,550 directed edges
OperationTimeNotes
Data generation1.3 ms
JSON serialise11.1 ms186 KB output
JSON deserialise4.5 ms
BFS traversal0.7 ms2,551 nodes visited
UpdateGraphEdge62.5 ms10,000 transitions · pool=50 · cap=50

Tier 2. Mid (cap=20, depth=3)

~8,421 nodes · 8,420 directed edges
OperationTimeNotes
Data generation2.6 ms
JSON serialise8.6 ms623 KB output
JSON deserialise13.6 ms
BFS traversal1.2 ms8,421 nodes visited
UpdateGraphEdge40.2 ms10,000 transitions · pool=50 · cap=20

Tier 3. Deep (cap=20, depth=4)

~168,421 nodes · 168,420 directed edges
OperationTimeNotes
Data generation43.7 ms
JSON serialise171.1 ms12,475 KB output
JSON deserialise283.0 ms
BFS traversal27.1 ms168,421 nodes visited
UpdateGraphEdge39.0 ms10,000 transitions · pool=50 · cap=20
Assertion: UpdateGraphEdge time does not meaningfully scale with graph depth. It remains in the 39–63 ms range across all three tiers. The cost is dominated by pool and cap size, not total node count.

Stress Test. Not Realistic

An extreme scenario far beyond any real project. Included for reference only to understand theoretical ceiling behaviour.

cap=50, depth=4 · ~6,377,551 nodes · 6,377,550 directed edges
OperationTimeNotes
Data generation2,967.8 ms
JSON serialise10,362.1 ms465,486 KB (~454 MB)
JSON deserialise16,191.6 ms
BFS traversal2,054.5 ms6,377,551 nodes visited
UpdateGraphEdge119.9 ms10,000 transitions · pool=50 · cap=50
Assertion: Even at 6.4 million nodes, UpdateGraphEdge completes in under 120 ms. This further supports that edge update cost scales with pool/cap configuration, not graph size. The real bottleneck at this scale is serialisation. Serialisation only occurs on save and load, which are infrequent operations. Not a concern in practice.

Graph View. Physics Limits

Real-time physics simulation at the maximum supported node count of 500 nodes / 499 edges.

500 nodes · 499 edges
OperationTimeNotes
PopulateGraph (BFS + spawn)184.5 msOne-time cost on open
Physics tick (single)12.4 msFirst few frames. Worst case.
Physics tick (avg over 100)7.71 ms~130 fps physics-only throughput
Node repulsion is O(N²). The first few frames carry maximum repulsion force between all node pairs before the simulation settles. This test measures that worst-case. Steady-state frame cost will be lower. Halving the node count cuts physics cost by approximately 4×.

List View. Maximum Capacity

The List tab at cap=50, measuring how quickly context assets can be retrieved on selection change.

45 entries returned, 5 filtered correctly
OperationTimeNotes
GetContextAssets. Cold15.36 msAssetDatabase lookup, paid once per selection change
GetContextAssets. Warm0.33 msResult cache hit; subsequent repaints use this path
Assertion: The 46× difference between cold and warm cost means repaints are essentially free. Only a selection change pays the full lookup price.

Recent Tab. Maximum Capacity

The Recent tab at maximum history depth, measuring the cost of rebuilding the display list from persisted history.

100-entry history · 94 resolved, 6 filtered correctly
OperationTimeNotes
History rebuild12.62 msAssetDatabase lookup per entry; paid once per history change
Per-entry average0.126 msAcross 94 resolved entries
Like the List view, this cost is paid only when history changes. Subsequent repaints use a cached display-entry list and incur no additional lookup cost.

Summary

All measurements are from a single test run on 2026-08-31. The tiers below reflect realistic usage; the stress test is included as a theoretical reference only.

  • Graph generation and traversal scale predictably with node count and remain well under 50 ms for any realistic project graph (Tier 1–2).
  • Edge updates are bounded by pool and cap configuration, not graph size. Consistent across 2,500 to 6.4 million nodes.
  • Physics simulation at 500 nodes runs at ~130 fps worst-case (first frames only); steady-state will be faster.
  • List and Recent tab lookups are O(1) after the first selection. Cache hits cost under 0.5 ms.
  • JSON serialisation is the only operation that scales steeply with node count. It only occurs on save and load, which are infrequent operations.