news 2026/6/17 16:16:26

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/6/18 6:36:59

开发功能开关-–-behaviac

原文 behaviac的运行时提供有核心的更新行为树的功能,在其之上,还有logging,热加载,连调等调试功能。这些调试功能只是‘开发’功能,在游戏发布后实际上是不需要的。 除了可以在config.h中定义BEHAVIAC_RELEASE宏为1…

作者头像 李华
网站建设 2026/6/17 23:01:07

DAY37 早停策略和模型权重的保存

浙大疏锦行 import torch import torch.nn as nn import torch.optim as optim from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import numpy as npirisload_iris() Xiris.data yiris.targetX_train,X_test,y_train,y_testtra…

作者头像 李华
网站建设 2026/6/16 16:58:20

g++演示如何从C++代码到可执行程序

🎬 个人主页:Vect个人主页🎬 GitHub:Vect的代码仓库🔥 个人专栏: 《数据结构与算法》《C学习之旅》《Linux》⛺️Per aspera ad astra. 文章目录1. C如何从代码到可执行文件1.0. 一小段代码进行演示1.1. 预处理阶段: g…

作者头像 李华
网站建设 2026/6/14 4:05:18

第八周学习

这周完成了课程中关于豆瓣首页的制作,初步掌握了制作静态页面的方法 项目实战-豆瓣首页 图标 <title>豆瓣</title><link rel"shortcut icon" type"image/x-icon" href"./favicon.ico"><link rel"stylesheet" h…

作者头像 李华
网站建设 2026/6/15 19:05:48

基于PLCS7 - 200的饮料自动机设计分享

基于PLCS7-200的饮料自动机 本设计包括设计报告&#xff0c;仿真工程。 设计方案 1&#xff0e;自动售货机有3个投币孔分别为1、5和10元。 2&#xff0e;售货共有汽水和咖啡两种选择&#xff0c;饮料分为十二元和十五元。 3.如果顾客投入硬币在限定的时间内&#xff08;2分钟&a…

作者头像 李华
网站建设 2026/6/13 23:48:51

Java基础大厂高频后台开发-面试常考八股题

一、基础概念 1)JVM是什么&#xff1a; ● 概念&#xff1a;运行 Java 字节码的虚拟机。针对不同系统有不同的实现&#xff0c;保证Java"一次编译&#xff0c;到处运行" ● 作用&#xff1a;将Java字节码转换为特定平台的机器码&#xff0c;实现跨平台性 ● 关键&…

作者头像 李华