【发布时间】: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