gpt4 book ai didi

c++ - 编译器优化重复类

转载 作者:行者123 更新时间:2023-11-30 03:07:34 26 4
gpt4 key购买 nike

我使用 C++ 作为中间语言,为每个函数对象创建一个具有调用方法的唯一类。我要避免的是检查是否已经使用了类似的函数并定义了它对应的类,所以我最终可能会得到完全相同的类但名称不同。所以我想知道编译器 (g++) 是否会检测到这一点并合并类。

最佳答案

只是为了澄清之前的两个答案(这是很好的答案):

编译器绝对不会合并你的类,根本不会。一些链接器可能沿着这些方向进行了一些优化,但这绝不是标准功能,标准的 Microsoft 和 GNU/Linux 链接器都没有这样做。通常,只有当您直接在目标文件中发出具有相同名称的弱条目时,链接器才会这样做,例如模板实例化就会发生这种情况。在 C/C++ 中没有直接获得这种行为的标准方法,尽管至少 GCC 提供了扩展来控制你自己的这种链接。

你应该自己做,因为它实际上是一种优化。 Jason 是对的,它“只是”减少了代码大小,但在现代 PC 架构上,这本身就是一个巨大的优化。 CPU 上的代码缓存并没有变得更大,内存速度也远不及 CPU 速度,因此由于代码镜像过大而导致的缓存未命中会对性能产生非常严重的影响。有基准测试表明,在某些工作负载中,使用 -Os(优化大小)编译 Linux 内核或大型应用程序(如 Firefox 或 OpenOffice)比使用 -O3 编译时要快得多。

关于c++ - 编译器优化重复类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5757993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com