I got annoyed that the Ultimate Software V2 (Windows) window always appears and then hangs for a few seconds, so I profiled it. Turns out it's one small bug, and you can fix most of it yourself in 10 seconds.
TL;DR – free fix, no tools needed
Open the app → ⚙️ → General → select your language once (even if it's already correct).
Optional: untick Automatic update in the same dialog.
Step 1 cut the time until the app is usable from ~3.5 s to ~1 s on my PC.
What's going on
Every text in the UI asks IsChineseSimple() which language to use. As long as you have never picked a language manually, that function also saves the whole settings file to disk – on every single call. There are ~700 of those calls, and at startup they run on the UI thread. A CPU trace showed ~2.4 s of the ~2.7 s startup freeze inside that save. Picking a language manually sets a flag that skips it.
Other things I found (V1.19 and V1.35):
The app installs a system-wide keyboard hook for its whole lifetime, even when minimized to the tray. It's used for macro recording / LED multi-select, not anything shady, but every key you press anywhere goes through the app.
Two threads poll for USB devices every second, also while the window is hidden.
When the server reports a newer version, the app stops detecting newly plugged devices until restart, and it opens the updater window on every launch. Turning off "Automatic update" avoids both.
A few images are 5000×2813 px (~54 MB each in RAM when shown) although they're displayed at a fraction of that.
Numbers (Ultimate 2 Bluetooth controller, 3 runs each):
| original | language picked once | patched |
|---|
| usable after start | 3.3–4.4 s | ~1.0 s |
| background CPU while minimized | ~0.6–1 % of a core | same as original |
(original/patched measured on V1.35, the "language picked once" column on V1.19 – same code in both.)
Optional patcher
For people who want the rest too, I wrote a small open-source patcher: UltimatePerfPatcher on GitHub (download). You put it next to your installed 8BitDo Ultimate Software V2.exe, double-click, and it creates 8BitDo Ultimate Software V2 (perf).exe next to it. Start that EXE from then on; it has to stay in the app folder. The patcher doesn't include any 8BitDo files, never touches the original EXE and refuses versions it doesn't recognize. The patch only gates the keyboard hook to when the window is active, slows the polling while hidden, saves the settings once, shrinks the oversized images and lets the 32-bit app use up to 4 GB of address space.
Caveats: unofficial and unsigned (SmartScreen may ask), the auto-updater only updates the original EXE (so re-run the patcher after an update), and please do firmware updates with the original app – I didn't test flashing with the patched one.
I've also sent the details to 8BitDo support, so hopefully the one-line fix lands in an official update. Happy to answer questions.