news 2026/4/2 9:40:42

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/3/13 21:35:14

当卷积网络遇上双向记忆:玩转时间序列预测新姿势

基于python语言的CNN—BiLSTM—Attention模型实现时间序列预测。 可实现多变量预测单变量,也可以实现单变量预测单变量。 多步预测单步预测随意切换 替换数据即可运行模型,参数修改方便, 时间序列预测总让人又爱又恨,今天咱们来点…

作者头像 李华
网站建设 2026/4/2 11:03:18

前端保存用户登录信息 深入全面讲解

前端保存用户登录信息的核心目标是持久化登录状态(减少重复登录)、提升用户体验,同时必须兼顾安全性(防止信息泄露、伪造、劫持)。本文从存储方案选型、安全防护、最佳实践、常见问题等维度,全面解析前端登…

作者头像 李华
网站建设 2026/4/3 3:02:31

【大前端】【Android】把 Activity 重构成 MVVM 的对比示例

同一个功能:加载用户并显示名字功能不变:点按钮 → 请求用户 → 显示用户名 → 失败提示一、❌ 传统 Activity 写法(所有东西都在 Activity)Activity(UI类)public class UserActivity extends AppCompatAct…

作者头像 李华
网站建设 2026/4/3 3:07:37

实习面试题-游戏服务端开发面试题

1.什么是游戏服务端?它在整个游戏架构中的角色是什么? 回答重点 游戏服务端是支撑在线多人游戏正常运行的后台服务器。它负责处理游戏中的逻辑、管理玩家数据、维护游戏状态、同步玩家之间的互动以及实现游戏所需的各种功能。在整个游戏架构中,游戏服务端是核心部分,它确…

作者头像 李华
网站建设 2026/4/2 1:26:51

Fastapi的单进程响应问题 和 解决方法

现象第1步:创建 FastAPI 服务器 (main.py)我们将创建一个 FastAPI 应用,包含三个接口:/fast: 一个立即返回的接口,用来测试服务器是否“活着”。/slow-sync: 一个使用 time.sleep() 模拟同步阻塞操作的接口。这是问题的关键。/slo…

作者头像 李华
网站建设 2026/4/1 16:41:24

实习面试题-Shell 面试题

1.如何在 Shell 脚本中实现字符串的截取和拼接? 回答重点 在 Shell 脚本中,实现字符串的截取和拼接可以通过内置的字符串操作方式来完成。具体来说,截取和拼接都是通过特定的语法来操作变量。 1)字符串截取: 通过 ${var:offset:length} 这种形式可以截取字符串。 例如:…

作者头像 李华