【问题标题】:Visual Studio Win32 C++ Project very slow when Linking链接时 Visual Studio Win32 C++ 项目非常慢
【发布时间】:2016-01-06 14:47:43
【问题描述】:

我有一个用 VS2015 (C++) 开发的 Win32 应用程序,其中嵌入了相当大的可执行资源。

嵌入的资源大小约为 500MB,嵌入的其他一些可执行资源在构建时总大小约为 700Mb。

Win32 应用程序只是一个引导程序,它检测是否安装了 .Net 框架,如果没有安装它,则可以提取和启动主要的可执行负载。所以 C++ 应用程序本身非常小 - 只是有一个很大的有效负载。

无论如何...

如果我在没有嵌入资源的情况下构建 C++ 应用程序,则构建需要几秒钟。

当我构建包含所有资源的 C++ 应用程序时,构建需要 45 分钟!

我的开发机器规格是 i7 四核 CPU、16Gb RAM 和 RAID 1 中的双 128Gb SSD,磁盘读/写速度约为 1Gb/s。

似乎链接器给了我问题,当我构建应用程序时,它很快编译并输出“Finished pass 2”。然后它会在那里等待 45 分钟进行链接。

我注意到,在任务管理器中,我的磁盘 I/O 已达到 100%,但平均读/写速度约为 800k/s(远不及普通的旧 SATA 速度,更不用说条带 SSD。)。

已尝试禁用 AV 软件,但不知道该去哪里查看?

对于如何加快这些大型资源的链接时间,有人有什么建议吗?

谢谢

【问题讨论】:

  • 奇怪它现在似乎工作正常!我将链接器更改为不使用增量链接,现在它在大约 20 秒内构建。但是,如果我将链接器设置恢复到原来的状态,它仍然会在 20 秒内构建:-$
  • 呸。在它开始正常工作后,我不得不重新启动。现在它又变慢了,无论我如何调整链接器选项,我都无法再次恢复性能。

标签: c++ performance visual-studio linker


【解决方案1】:

看来问题与我的 C: 驱动器(2 个条带 SSD)有关。当我将项目设置为输出到我的 D: 驱动器(普通的旧 SATA 硬盘)时,构建时间又回到了大约 30 秒。

看来我的 HDD 控制器有问题。奇怪的是它不会影响我所做的任何其他构建,只会影响具有大量嵌入式资源的构建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-26
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    相关资源
    最近更新 更多