【问题标题】:Slow xamarin build in visual studio 2017在 Visual Studio 2017 中构建缓慢的 xamarin
【发布时间】:2019-07-30 17:44:33
【问题描述】:

我最近在Visual Studio 2017 中开发了一个基于Xamarin 的应用程序,我不确定我在构建和调试时看到的性能是可以预期的还是有问题的。

环境:imac 2015 年末,四核 i5 @3.5GHz,24GB RAM。 我在 Windows 10 中的并行 13 下执行 Visual Studio(最新),并已将所有四个内核和 20GB RAM 分配给 VM(如果我分配更少,它不会产生影响)。

该解决方案是一个标准的基于 xamarin 的解决方案,包含 3 个项目和大约 10 个类,大约 300loc(是的,真的,那里几乎什么都没有)。 重建大约需要 1 分钟。在调试模式下启动应用程序大约需要 30 秒才能显示模拟器。 查看代码大小和硬件规格,我期望构建和模拟只需几秒钟。 我错了吗?即使考虑到虚拟机,我也没有预料到这些数字。 有人可以分享经验/想法吗?

【问题讨论】:

  • 是的,构建 Xamarin 项目相当慢。
  • 通常 Xamarin 比 Xcode 或 Android Studio 构建时间慢... VisualStudio/Xamarin 高度依赖磁盘 IO,确定导致缓慢构建的最佳方法是启用诊断级别 MSBuild在构建结束时记录并查看执行时间摘要。此外,您不应在调试运行之间关闭 Android 模拟器/iOS 模拟器,如果使用 Android 模拟器,在主机中运行它并让 VM 来宾连接到它比在来宾本身内运行它更快。

标签: xamarin visual-studio-2017 parallels


【解决方案1】:

您的问题不仅仅是编译时间。每次构建项目时,您的共享代码都会被编译成 dll,检查代码依赖关系,然后链接到正在编译的本机项目,打包资源、完整性检查和签名,最后打包(不是说包含的 nuget 包和其他插件),然后将整个包打包到应用存档中,这也需要时间来编写。

您的应用也会通过 USB 或网络传输到您的设备(默认为 USB)。

考虑到“幕后”发生的事情,30 秒是相当快的。

但是,我发现性能较少取决于 cpu 和 ram(至少如果您的开发机器具有相当数量的两者),而是取决于硬盘的性能。

如果您真的想加快速度,可以考虑运行 Visual Studio 并在 nvme 驱动器上进行编译(替代方案可能是 SSD RAID)。

例如,我曾经有一个 xamarin 应用程序,它对各种 nuget 包有很多依赖。在 Mac Mini 上编译 iOS 版本大约需要 25 分钟(完全重建)(2011 型号改进了售后三星 850 Pro),切换到在配备三星 950 Pro nvme 驱动器的骷髅峡谷 NUC 上运行的 VM 解决方案确实加快了这个过程令人难以置信的 2.5 分钟。

【讨论】:

  • 您认为将 VM 移动到连接 USB 3 的 SSD 会显着改善构建吗?因为那将是一个负担得起的选择......
  • 我不这么认为。您的 USB 3.0 SSD 将具有 300 Mb/s 的有效带宽。使用 USB 3.1 驱动器可能值得一试,它允许 900 Mb/s 的带宽。但是,使用 SSD 会将您的速度限制在 ~ 500 MB/s,因此为了达到这 900 MB/s,您需要一个 USB 连接的 nvme 驱动器。如果您必须使用 SSD,最好在内部安装 SSD,因为您的电脑上有一个 SATA III 端口,因为 USB 连接很可能成为瓶颈。
  • 当您说“切换到在配备三星 950 Pro 的骷髅峡谷 NUC 上运行的 VM 解决方案”时,您是指在 VM 中运行 macOS 吗?
猜你喜欢
  • 2017-03-24
  • 1970-01-01
  • 2017-04-03
  • 2022-10-25
  • 2019-01-20
  • 2023-03-08
  • 2017-09-07
  • 1970-01-01
  • 2018-04-25
相关资源
最近更新 更多