news 2026/9/19 8:36:46

Cplusplus生成代码大小的说明-–-behaviac

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cplusplus生成代码大小的说明-–-behaviac

原文

C++版本广泛的用到了template。

Code bloat occurs because compilers generate code for all templated functions in each translation unit that use them. Back in the day the duplicate code was not consolidated resulting in “code bloat”. These days the duplicate code can be removed at link time.

所以,在看到产生的代码的大小后不要过于惊慌。(另外,编译速度也会比较慢。)

在3.4.0后的版本里,behaviac已经支持了Link Time Optimization(LTO)。LTO可以极大的减少产生代码的大小以及优化产生代码的效率。

gcc

  • 如下所示,通过参数指定Release以及ForeUseRelease可以打开LTO(如果你的gcc支持的话)

    cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DBEHAVIAC_VERSION_MODE=ForeUseRelease --build ../../../..

  • 或者通过cmake gui设置CMAKE_BUILD_TYPEReleaseBEHAVIAC_VERSION_MODEForeUseRelease

  • gcc版本需要是4.9以上,低版本不支持LTO

  • 其他版本的gcc请参考相应文档设置LTO

msvc

  • 在visual studio中可以参考打开编译选项/Gy, /GL及/OPT:ICF /OPT:REF /LTCG链接选项
  • 指定ForeUseRelease的时候,cmake生成的项目文件,在Release下缺省的已经打开上述优化开关。
  • 也可以考虑调整O1,O2或Ox编译选项

请参考构建说明

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 8:32:54

Week 29: 深度学习补遗:MoE的稳定性机制与路由策略实现

文章目录Week 29: 深度学习补遗:MoE的稳定性机制与路由策略实现摘要Abstract1. Noisy Top-K Router1.1 理论背景1.2 代码实现2. Token 级与 Pooling 级路由2.1 理论背景2.2 代码实现3. Auxiliary Loss3.1 理论背景3.2 代码实现总结Week 29: 深度学习补遗&#xff1a…

作者头像 李华
网站建设 2026/9/19 3:31:56

25年12月14日复盘总结,大盘方向,操作建议,板块机会,实用干货

25年12月14日复盘总结,大盘方向,操作建议,板块机会,实用干货大盘指数经过近一个季度回调半指的风险得到了极大的释放,指数走出了三段4的调整,那在这个位置我们就不应该再看风险,三段4的调整已经…

作者头像 李华
网站建设 2026/9/19 2:58:32

what?动态规划?

动态规划入门:从原理到实战,吃透基础算法动态规划(Dynamic Programming,简称 DP)是算法领域的核心思想之一,也是面试、竞赛中的高频考点。它并非单一算法,而是一种 “化繁为简” 的解题思路 ——…

作者头像 李华
网站建设 2026/9/18 22:19:26

CommonJS 的缓存机制:为什么二次 require 得到的对象是同一个?

各位同仁,下午好!今天,我们将深入探讨 Node.js 中 CommonJS 模块系统的核心机制之一:模块缓存。这是一个看似简单却蕴含深厚设计哲学的机制,它直接决定了我们在 Node.js 应用中管理状态、优化性能以及理解模块行为的关…

作者头像 李华
网站建设 2026/9/18 9:26:37

跨标签页通信的五种方案:LocalStorage、BroadcastChannel 与 SharedWorker

各位同仁,下午好!今天,我们将深入探讨前端开发中一个既常见又关键的议题:跨标签页通信。在现代Web应用中,用户经常会同时打开多个标签页或窗口来访问同一个网站的不同部分,或者处理同一任务的不同阶段。在这…

作者头像 李华