常量正确性可以提高性能吗?

2024-01-01

我已经多次读到,在 C 或 C++ 代码中强制 const 正确性不仅是可维护性方面的良好实践,而且还可以允许编译器执行优化。然而,我也读到了完全相反的内容——它根本不会影响性能。

因此,您是否有示例表明 const 正确性可以帮助您的编译器提高程序的性能?


const正确性不能提高性能,因为const_cast and mutable存在于语言中,并允许代码一致地违反规则。这在 C++11 中变得更糟,你的const数据可能例如是一个指向 a 的指针std::atomic,这意味着编译器必须尊重其他线程所做的更改。

也就是说,编译器查看它生成的代码并确定它是否实际写入给定变量并相应地应用优化是很简单的。

这一切都说,const正确性是一个good关于可维护性的事情。否则,您的类的客户可能会破坏该类的内部成员。例如,考虑标准std::string::c_str()-- 如果它不能返回 const 值,您就可以修改字符串的内部缓冲区!

不要使用const出于性能原因。使用它是出于可维护性的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常量正确性可以提高性能吗? 的相关文章

随机推荐

  • Scala 中的地图内的地图

    我有这个代码 val total ListMap String HashMap Int val hm1 new HashMap Int String val hm2 new HashMap Int Int insert values in
  • 在 R 中查找矩阵的相邻元素

    编辑 非常感谢以下用户的巨大贡献以及 Gregor 的基准测试 假设我有一个充满整数值的矩阵 如下所示 mat lt matrix 1 100 10 10 我可以像这样创建每个元素的 x y 坐标列表 addresses lt expand
  • Flutter如何访问FCM backgroundHandler静态方法中的provider.of(context)?

    我已成功设置后台通知并使用邮递员对其进行了测试 一切都很好 现在我需要在我的backgroundHandler 中访问Provider of context 它必须是没有上下文的静态方法 我需要做的就是根据后台通知中的数据执行操作 这是我初
  • 在 Ubuntu 上通过 Python 使用 Access 数据库 (.mdb) [重复]

    这个问题在这里已经有答案了 我正在尝试使用 pyodbc 访问 Ubuntu 上的 mdb 到目前为止我的进展基于此链接 查询使 MS Access 崩溃 https stackoverflow com questions 3064830
  • 在 Ionic 应用程序中全屏横向播放视频

    我在播放视频横向全屏模式时遇到问题 请帮助我以横向全屏模式显示视频 我使用以下代码在 Ionic 中查看模板
  • 绘制 Matplotlib 等高线图的轴线或原点

    我想画画x 0 and y 0等高线图中的轴 使用白色 如果这太麻烦了 我想要一个白点来表示原点在哪里 我的等高线图如下所示 下面给出了创建它的代码 xvec linspace 5 5 100 X Y meshgrid xvec xvec
  • 如何使用 OCMock 验证某个方法从未被调用?

    在我的日常工作中 我被宠坏了莫基托的never 确认 http mockito googlecode com svn tags latest javadoc org mockito Mockito html never 这可以确认模拟方法从
  • NSArray:lastObject 返回一个自动释放的对象吗?

    我正在开发一个 iPhone 项目 我想从 NSMutableArray 中检索一个对象 从数组中删除该对象 然后在以后使用它 代码看起来像这样 NSMutableArray array fill the array NSObject ob
  • 使用 STL 在 C++ 中处理大于 2 GB 的文件

    我正在进行二进制文件处理 在我的算法中我想知道实际类型pos type and off type 例如计算文件大小或查找给定位置时 tellg and seekg 当计算文件的大小时我只是static cast the pos type t
  • 根据构建配置嵌入不同的框架

    我有 4 种构建配置 Debug Release 白标调试 白标发布 Debug and Release应该链接并嵌入我的自定义LightTheme framework而不是WhiteLabelTheme framework WhiteLa
  • 在批处理脚本中查询注册表项

    我使用以下代码来获取启动时运行的程序列表 并将它们记录到文件中 for f skip 2 tokens 1 2 A in REG QUERY HKCU SOFTWARE Wow6432Node Microsoft Windows Curre
  • 未记录的支持 Date.parse 格式?

    MDN s 的文档Date parse https developer mozilla org en JavaScript Reference Global Objects Date parse says 参数 dateString一个字符
  • 如何同时在2个不同的symfony2防火墙上进行身份验证?

    我有一个包含 2 个区域的 Symfony 应用程序 一个区域用于客户端从网页访问 另一个区域用于来自 AJAX 和 Web 服务的 API 调用 每个区域都由自己的防火墙保护 WEB 界面通过登录表单和 API 进行身份验证http ba
  • 如何在视图集中添加自定义权限

    创建模块时 如何在 django Rest Framework 的视图集中添加除默认权限之外的自定义权限 我有权限 fix an appointment 在下面的视图集中 如何包含此权限 拥有此权限的人只能进行创作 我的views py文件
  • 使用 Python 请求提取 href URL

    我想使用 python 中的 requests 包从 xpath 中提取 URL 我可以获取文本 但我尝试没有给出 URL 有人可以帮忙吗 ipdb gt webpage xpath xpath url text Text of the U
  • 在 tkinter 中显示网格布局单元

    有没有trick使用它时显示网格布局单元格 或单元格的边框 以便直观地了解幕后发生的情况 我已经搜索了一点 但还没有找到任何东西 如果您为包含框架指定颜色 并使用选项在单元格之间放置填充 则背景将通过间隙渗透 这只适用于有小部件的地方 如果
  • Ktor 中的表单身份验证

    我是新来的Kotlin and Ktor试图查看身份验证部分 所以我得到了以下代码 路由 和 bye 工作正常 但路由 login 给出空白页面 package blog import kotlinx html import kotlinx
  • Opencv 矩阵元素的列和

    我需要分别计算所有列中元素的总和 现在我正在使用 矩阵 cross corr 应该被求和 Mat cross corr summed for int i 0 i
  • /vagrant挂载后如何运行nginx.service

    我想做的事 我正在尝试使 nginx 加载配置 vagrant由vagrant自动安装 所以我编辑了 nginx service 使其在安装共享文件夹后启动 但它不起作用 当然nginx是在virtualbox guest utils se
  • 常量正确性可以提高性能吗?

    我已经多次读到 在 C 或 C 代码中强制 const 正确性不仅是可维护性方面的良好实践 而且还可以允许编译器执行优化 然而 我也读到了完全相反的内容 它根本不会影响性能 因此 您是否有示例表明 const 正确性可以帮助您的编译器提高程