news 2026/5/26 8:43:02

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/5/25 18:07:11

C语言图论:最短路径算法

本文献给: 已掌握无向图基础,希望理解如何在带权图中找到两点间最短路径的C语言学习者。本文将系统讲解两种经典的最短路径算法。 你将学到: 最短路径问题的定义与核心概念Dijkstra算法:解决单源、非负权图的最短路径Bellman-For…

作者头像 李华
网站建设 2026/5/26 4:52:42

实习面试题-聚合搜索项目面试题

1.你的项目中使用了哪些技术栈?请分别介绍一下 Spring Boot、Elastic Stack 在项目中的作用。 2.你提到自己二次开发了 Spring Boot 初始化模板,这个模板有哪些功能? 3.什么是 HttpClient?如何使用 HttpClient 来抓取外部网站的文章?请简述整个过程。 4.什么是 Jsoup?…

作者头像 李华
网站建设 2026/5/26 7:21:48

JavaScript 处理二进制数据流:从 ArrayBuffer 到 Blob 再到 File 的转换指南

各位同学,大家好。今天我们将深入探讨JavaScript中处理二进制数据流的核心机制。在现代Web应用中,我们不再仅仅局限于文本数据的交互,图片、音频、视频、文件上传下载、网络协议等都离不开对二进制数据的精确操控。理解并掌握JavaScript提供的…

作者头像 李华