使用自托管Runner时Github Actions Workflow比本地运行慢的问题
性能差异原因解析
资源配额与进程抢占:同一系统下,自托管Runner通常以服务形式运行,可能被系统或Github Actions本身限制了CPU、内存使用率。而本地执行时你大概率会关闭其他占用资源的程序,让Unity独占更多硬件资源,速度自然更快。另外,如果系统后台还有其他进程运行,Runner会和它们抢占资源,进一步拖慢速度。
缓存未配置或缺失:本地执行时,Unity的
Library文件夹、Xcode的Derived Data等缓存内容已存在,导出时可直接复用。但自托管Runner如果没配置缓存策略,每次运行都会从头生成这些缓存,光是重新编译依赖、索引资源就会消耗大量时间。执行上下文与权限限制:本地是在你的登录用户会话下运行,能完整调用系统硬件加速(比如GPU辅助资源处理),且有足够文件系统权限。而Runner可能以低权限服务账户运行,无法启用GPU加速,或者访问某些系统资源时受限,导致Unity导出的硬件优化无法生效。
磁盘IO性能瓶颈:如果Runner的工作目录位于机械硬盘,或者磁盘正在被其他任务占用,Unity导出时大量临时文件的读写会变得异常缓慢。本地操作时你可能用的是读写更快的SSD,且磁盘资源充足,IO瓶颈自然小很多。
网络依赖重复下载:Unity导出iOS项目时,可能需要下载iOS模块、第三方插件的依赖包。本地这些资源已缓存,但Runner如果没配置缓存,每次都要重新下载,遇到网络波动时耗时会大幅增加。
内容的提问来源于stack exchange,提问作者Arnav Sanghavi
相关产品推荐
相关产品推荐

