【问题标题】:Can Visual Studio still optimize pre-compiled code?Visual Studio 还能优化预编译代码吗?
【发布时间】:2012-10-24 06:01:46
【问题描述】:

好吧,解释我的问题的最佳方式是通过 2 个示例:

示例 1:

您已经为自己创建了一个框架或某种称为 MyLibrary 的引擎,并且您已构建为具有最大优化选项的 .lib。现在您包含标题并链接 .lib 在名为 MyImplementation 的新项目中。该项目使用 MyLibrary 的大部分功能,完成后,您构建项目(再次进行最大优化)。

示例 2:

再次,您拥有相同的库,但不是构建它,而是将其 开源。然后您制作相同的 MyProject,包含标题并以最大优化的方式构建 MyProject已启用。

那么,示例 2 会运行得更快吗,因为编译器可以访问整个源代码(框架/引擎 + 您使用它的项目)?

【问题讨论】:

  • 我的猜测是这不太可能。据我所知,优化传统上是在单个编译单元上完成的(单个库通常由许多这些单元组成),并且根本不考虑在整个“项目”中使用代码。也可以在链接时执行一些优化,但是这些显然会考虑将所有代码链接到可执行文件中,无论您的项目如何。 (也就是说,我不是编译器专家,所以对此持怀疑态度。)
  • 过程间优化应该考虑多个编译单元,不是吗?

标签: c++ visual-studio optimization


【解决方案1】:

静态库是预编译的,这意味着任何进一步的优化都取决于链接器。如今,链接器可以获得很大的性能提升,但通常最好的结果来自配置文件引导优化,这确实需要特殊的编译器设置来引导配置文件。最好将项目开源(除非您要保护知识产权),因为这样开发人员就可以为他们的平台和编译器编译项目,更不用说没有源代码几乎不可能进行调试。

【讨论】:

    猜你喜欢
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多