功能级链接(VC ++中的/ Gy开关) - 有什么用?

时间:2009-03-10 12:22:56

标签: c++ optimization visual-c++ linker

在大型VS解决方案(200个VC项目)中使用此开关可以获得什么?

据我所知,这主要影响产生的二进制文件的大小;但除了较小的二进制文件之外,FLL还能帮助减少项目之间的依赖关系吗?

FLL通常如何影响构建时间?

我也很欣赏有关VC中FLL的有根据的解释。 MSDN的解释非常简短。

1 个答案:

答案 0 :(得分:29)

由于您链接了MSDN的说明,您知道/ Gy确保所有函数都打包在自己的COMDAT中。这样做的主要优点是,如果你有相同的功能,链接器可以将它们全部折叠成一段实际代码(“COMDAT折叠”)。当你有许多相同的函数时,这可能会产生非常大的影响,当你编写对模板很重的现代C ++时,这种情况经常发生。

除了由于COMDAT折叠和消除未引用的COMDAT而产生的可执行文件的较小尺寸之外,/ Gy没有其他影响。具体而言,它无助于减少项目间的依赖关系。

编译时间略有增加(与其他优化器标志类似)。通常不是你会注意到的东西。