为什么不把所有的函数都定义成内联函数

内联是以代码膨胀为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。如果执行函数体内代码的时间相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。以下情况不宜使用内联:

  1. 如果函数体内的代码比较长,使用内联函数将导致内存消耗代价较高。
  2. 如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。
  3. 另外,类的构造函数和析构函数容易让人误解成使用内联更有效。要当心构造函数和析构函数可能会隐藏一些行为,如“偷偷地”执行了基类或者成员对象的构造函数和析构函数。

所以,不要随便地将构造函数和析构函数的定义放在类的声明中。一个好的编译器将会根据函数的定义体,自动地取消不值得的内联。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/186011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode集成git

1、首先电脑要安装git 打开git官网地址:Git进行下载,如下图界面: 如图片中描述:一般进入官网后会识别电脑对应系统(识别出了我的电脑是Windows系统 。如果未识别到电脑系统,可在左侧选择自己电脑对应的系统…

主成分分析例题 (多元统计分析期末复习)

例一 给定X的协差阵,对其进行主成分分析, (1)求出每个主成分的贡献率; (2)求出每个原始变量的信息提取率; 解:对于主成分分析的题,一般来说,题目给定一个协方…

us提升到ns级精度settimeofday()到clock_settime()

精度 clock_settime()精度比settimeofday()高,受限制于参数的结构体,一个是ns级精度,另一个us级精度。具体两个函数原因参考如下。 int clock_settime(clockid_t clk_id, const struct timespec *tp); int settimeofday(const struct timeva…

[vue3] 使用 vite 创建vue3项目的详细流程

一、vite介绍 Vite(法语意为 “快速的”,发音 /vit/,发音同 “veet”) 是一种新型前端构建工具,能够显著提升前端开发体验(热更新、打包构建速度更快)。 二、使用vite构建项目 【学习指南】学习新技能最…

Elasticsearch:使用 ILM 示例运行降采样 (downsampling)

如果你对降采样还不是很熟的话,请阅读之前的文章 “Elasticsearch:对时间序列数据流进行降采样(downsampling)”。这是一个简化的示例,可让你快速了解降采样如何作为 ILM 策略的一部分来减少一组采样指标的存储大小。 该示例使用典…

2021年3月9日 Go生态洞察:Go开发者调研结果解读

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

java对象 转换成json字符串 工具类 jackson

jackson概述 Jackson 是一个用于处理 JSON 数据的 Java 库,由 FasterXML 公司开发和维护。它提供了一组功能强大的 API,用于在 Java 对象和 JSON 数据之间进行高效的序列化(将对象转换为 JSON 格式)和反序列化(将 JSO…

获取焦点后,样式异常的处理方法

问题 在使用monaco-editor 设置代码提示未正常显示,提示框出现,看不到内容,如图 看不到内容,有两种情况: 情况一:没有得到数据,所以没有展示; 情况二:得到了数据&#x…

数据预处理:随机裁剪放缩

随机裁剪放缩是一种数据增强技术,可以在训练神经网络时增加数据的多样性,提高模型的泛化能力。具体来说,随机裁剪放缩可以通过随机裁剪和缩放原始图片来生成多个不同的训练样本,从而增加数据集的大小和多样性。这种技术在图像分类…

CentOS一键安装docker脚本

CentOS安装Docker一键脚本 在CentOS上安装Docker是许多项目中常见的任务之一。为了简化这个过程,你可以使用下面的一键脚本。 #!/bin/bash# 卸载旧版本(如果有) sudo yum remove -y docker \docker-client \docker-client-latest \docker-c…

Django之Auth认证模块

文章目录 一、简介二、Auth模块是什么三、Auth模块常用方法create_user() 创建普通用户authenticate() 用户认证auth.login(HttpResponse,user)登录状态保持is_authenticated 登录认证判断auth.loginout(reqeust)退出登录login_required() 登录认证装饰器check_pass…

MySQL之JDBC

💕"我像离家的孤儿,回到了母亲的怀抱,恢复了青春。"💕 作者:Mylvzi 文章主要内容:MySQL之JDBC 一.什么是JDBC? JDBC编程就是通过Java 代码来操纵数据库 数据库编程, 需要数据库服务器提供一些API供程序…

reversed函数(python)

在Python中,reversed()是一个内置函数,用于将序列(如字符串、列表、元组等)进行反转。它返回一个反向迭代器对象,可以使用list()函数将其转换为一个列表。 语法: reversed(sequence)参数: se…

原来10张图就可以搞懂分布式链路追踪系统原理

分布式系统为什么需要链路追踪? 随着互联网业务快速扩展,软件架构也日益变得复杂,为了适应海量用户高并发请求,系统中越来越多的组件开始走向分布式化,如单体架构拆分为微服务、服务内缓存变为分布式缓存、服务组件通…

经典策略梯度算法

经典策略梯度算法 DDPG算法 DDPG 算法被提出的初衷其实是 DQN 算法的一个连续动作空间版本扩展。深度确定性策略梯度算法( deep deterministic policy gradient,DDPG),是一种确定性的策略梯度算法。 由于DQN算法中动作是通过贪…

STM32CubeIDE(CUBE-MX)----快速移植FreeRTOS实战

文章目录 前言一、Freertos可视化配置二、生成代码三、实验现象总结 前言 FreeRTOS(Real-Time Operating System)是一个开源的实时操作系统内核,专注于嵌入式系统。它提供了一套用于管理任务、调度器、内存管理等的实时操作系统功能&#xf…

spring RedisTemplate RedisLockRegistry opsForXxx 基本使用总结以及介绍

一、基本介绍 RedisTemplate 为 spring 对 redis 操作的高度封装,基本已经满足所有使用场景。 若存在其他拓展使用我们可以自行封装工具类对基本操作进行组装。 RedisLockRegistry 对 redis 锁的一些封装 二、不同环境下依赖以及基本配置 2.1 spring-boot 下依赖…

windows启动后直接进入指定程序并且不显示欢迎界面和windows桌面

windows启动后直接进入指定程序并且不显示欢迎界面和windows桌面 前言开机进入指定程序方法问题 浅尝GINA和Credential Providers关闭欢迎屏幕 前言 由于系统需求需要做到电脑开机后显示完windows加载页面就直接进入自己系统的界面,并且不显示登录欢迎页面&#xf…

Linux swapon命令教程:如何在Linux中启用和禁用交换空间(附实例教程和注意事项)

Linux swapon命令介绍 Linux的swapon命令用于启用指定设备和文件的交换。当物理内存(RAM)达到其最大容量时,Linux使用交换空间。如果系统需要更多的内存,而RAM不足,内存中的非活动页面将被移动到交换空间。交换空间是…

【九日集训】第七天:二维数组

二维数组就是一个矩阵,它有两个参数,像这样a[i][j],其中i表示第几行,j表示第几列(注意下标从0开始) 一维数组的传参用的一个*,int a(int * nums); 二维数组的传参用的两个**,int a(i…