【问题标题】:Visual Studio 2010 C++ linker performance for large projects大型项目的 Visual Studio 2010 C++ 链接器性能
【发布时间】:2010-08-18 13:58:16
【问题描述】:

在我的公司,我们仍在使用 Visual Studio 2005,但正在研究 Visual Studio 2010,希望它能加快我们开发周期的某些部分。目前,我们最感兴趣的是 Visual Studio 2010 的 C++ 链接器的性能。在构建我们的应用程序时,我们正在查看 40 秒到 2 分钟之间的链接时间,具体取决于机器配置(SSD 与 HDD)以及是否东西已经在 Windows 的磁盘缓存中。我们使用 VS2010 链接器而不是 VS2005 链接器的简单测试显示了大约 25% 的改进。我们希望看到更大的改进,因为我们认为链接器现在可以使用多个内核。

这 25% 真的是我们在切换到 VS2010 时应该期待的改进,还是有一些神奇的链接器开关可以将链接时间减少到可接受的水平?

【问题讨论】:

  • 为什么微软要添加一个神奇的开关来让程序运行得更快,但是却无法开启?
  • 因为魔法开关可能并非在所有情况下都有效,所以他们默认将其关闭。

标签: c++ performance visual-studio-2010 linker


【解决方案1】:

我的理解是 MS 对 VS2010 中的链接器所做的重大更改(性能方面)是编写 .pdb 文件是在单独的线程上完成的。当然,由于链接器的作用远不止于此,因此它对整体链接时间的改善程度是有限度的:

如果您对该分析感兴趣,这里有一篇文章展示了如何获得更详细的时序统计信息:

不管怎样,只要加入一套新工具,速度就提高了 25%,这对我来说似乎是一个不错的结果。

【讨论】:

    【解决方案2】:

    减少 25% 的时间也不错。如果您想要更快的链接时间,请尝试使用 DLL 进行动态链接,而不是使用静态库进行链接。这通常更快。

    【讨论】:

    • 这也是我在开发过程中所做的。在开发过程中,我使用大量的小 DLL 构建我的应用程序,但是当我必须为客户制作可执行文件时,我将其链接到一个大的可执行文件中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 2012-01-25
    • 2011-09-13
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多