MonoGame应用在高性能PC启动耗时1分30秒的排查求助
MonoGame应用在高性能PC启动缓慢的排查与解决
根据描述的情况,问题核心是MonoGame启动时对输入/摇杆相关注册表项进行了大量重复遍历操作,导致启动耗时剧增。以下是针对性的排查和解决方法:
禁用冗余输入设备
高性能PC通常会连接多个外设(手柄、摇杆、模拟控制器等),MonoGame的输入初始化逻辑会遍历所有注册的输入设备,残留的无效设备驱动或未卸载的外设会触发大量重复的注册表查询。- 打开设备管理器,勾选"查看"->"显示隐藏设备"
- 禁用或卸载所有未在使用的游戏控制器、HID输入设备
- 重启PC后再测试启动速度
清理输入设备注册表残留
针对日志中提到的重复访问的注册表项,手动清理无效条目:- 运行
regedit打开注册表编辑器 - 定位到以下路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HIDHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick
- 删除对应已不存在设备的子项(操作前务必备份注册表)
- 运行
优化MonoGame输入初始化逻辑
若无法通过系统层面解决,可修改代码限制设备枚举范围:// 在Game.Initialize()前添加,过滤非必要设备 var inputManager = new InputManager(this); inputManager.FilterDevices(device => device.DeviceType == InputDeviceType.GamePad);或者直接跳过部分输入设备的初始化,仅保留核心输入类型(键盘、鼠标)。
使用性能分析工具精准定位
用Visual Studio 2022的性能探查器进一步确认卡点:- 启动性能探查器,选择"启动时的性能"
- 分析调用栈中耗时最长的操作,重点关注
Microsoft.Xna.Framework.Input相关的方法 - 确认是框架枚举逻辑问题还是系统设备驱动异常
回退MonoGame框架版本
部分MonoGame版本在多输入设备场景下存在枚举性能缺陷,尝试回退到你在Surface平板上正常运行的框架版本,验证是否是版本兼容性问题。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

