编译器处理包含保护头的开销有多大?

2024-04-29

为了加速大型源文件的编译,修剪翻译单元中使用的标头数量是否更有意义,或者编译代码的成本是否远远超过处理包含保护的时间标头?

如果后者是真的,那么工程工作最好花在创建更多、轻量级的标头上,而不是更少。

那么,现代编译器需要多长时间才能处理有效包含保护的标头?在什么时候包含此类标头会影响编译性能?

(相关这个问题 https://stackoverflow.com/questions/6685457/header-file-inclusion-static-analysis-tools)


前几天我读到了有关此问题的常见问题解答......首先,写下correctheaders,即包含您使用的所有标头,并且不依赖于未记录的依赖项(可能会发生变化)。

其次,编译器现在通常会识别包含保护,因此它们相当高效。但是,您仍然需要open很多文件,这可能会成为大型项目的负担。一个建议是这样做:

头文件:

// file.hpp

#ifndef H_FILE
#define H_FILE

/* ... */

#endif

现在要使用源文件中的标头,请添加一个额外的#ifndef:

// source.cpp

#ifndef H_FILE
#  include <file.hpp>
#endif

源文件中的噪音会更大,并且您需要可预测的包含保护名称,但您可能会避免大量类似的包含指令。

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

编译器处理包含保护头的开销有多大? 的相关文章

  • 在 JavaScript 中嵌套“switch”案例:有速度优势吗?

    这里有新手问题 我有一个包含大量字符串的 开关 像这样按字母顺序拆分是否有速度优势 switch myString substring 0 1 case a switch myString case a string beginning w
  • Java 基准测试 - 为什么第二个循环更快?

    我对此很好奇 我想检查哪个函数更快 所以我创建了一些代码并执行了很多次 public static void main String args long ts String c sgfrt34tdfg34 ts System current
  • 为什么我的空循环在 Intel Skylake CPU 上作为函数调用时运行速度是原来的两倍?

    我正在运行一些测试来比较 C 和 Java 并遇到了一些有趣的事情 在 main 调用的函数中 而不是在 main 本身中 运行具有优化级别 1 O1 的完全相同的基准代码 导致性能大约翻倍 我正在打印 test t 的大小 以毫无疑问地验
  • 为什么在排序输入上插入到树中比随机输入更快?

    现在我一直听说从随机选择的数据构建二叉搜索树比有序数据更快 这仅仅是因为有序数据需要显式重新平衡以将树高度保持在最低限度 最近我实现了一个不可变的treap http en wikipedia org wiki Treap 一种特殊的二叉搜
  • bool() 和operator.truth() 有什么区别?

    bool https docs python org 3 library functions html bool and operator truth https docs python org 3 library operator htm
  • 服务器端的 ASP.NET 等效项包括

    虽然服务器端包含的经典 ASP 方法在 ASP NET 中有效 但我的印象是它不是首选方法 我 应该 如何达到同样的效果 这就是我现在正在做的事情 您现在有许多选项可以提供这种效果 但方式不同 用户控件 ascx 母版页 master 服务
  • 为什么这个未使用的变量没有被优化掉?

    我使用了 Godbolt 的 CompilerExplorer 我想看看某些优化有多好 我的最小工作示例是 include
  • 如何在 C++ 中对静态缓冲区执行字符串格式化?

    我正在处理一段对性能要求非常高的代码 我需要执行一些格式化的字符串操作 但我试图避免内存分配 甚至是内部库的内存分配 在过去 我会做类似以下的事情 假设是 C 11 constexpr int BUFFER SIZE 200 char bu
  • jQuery .getJSON 与 .post 哪一个更快?

    Using getJSON or post 我正在尝试通过仅用于 AJAX 请求的页面发送一些参数 并获取 JSON 或 html 片段中的一些结果 我想知道哪个更快 假设 HTML 文件只是纯布尔文本 true 或 false 正如其他人
  • 性能计数器的性能影响是什么

    当考虑使用性能计数器作为我公司的基于 NET 的站点时 我想知道使用它们的开销有多大 我是否想让我的网站不断更新其计数器 或者我最好只在测量时更新 设置性能计数器的开销通常不够高 无需担心 设置共享内存区域和一些 NET 对象 以及 CLR
  • 如何为 CUDA 内核选择网格和块尺寸?

    这是一个关于如何确定CUDA网格 块和线程大小的问题 这是对已发布问题的附加问题here https stackoverflow com a 5643838 1292251 通过此链接 talonmies 的答案包含一个代码片段 见下文 我
  • 为单个方法引用大 DLL

    我想在 C 中使用大型类库 dll 中的单个方法 是否有性能或其他方面的缺点 我应该使用反射工具 读取 方法代码并将其复制粘贴到我的项目中吗 更新 硬盘空间不是问题 我的应用程序是网络应用程序 是否有性能或其他方面的缺点 唯一真正重要的是可
  • java charAt() 和startsWith() 哪个更快? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我的问题是 如果我想检查特定索引中字符串的一个字符 仅检查一个字符 哪种方法非常有效charAt or startsWith 我的意思是 据我所
  • 确定向量中是否存在元素的最有效方法

    我有几种算法取决于确定元素是否存在于向量中的效率 在我看来 这 in 这相当于is element 应该是最有效的 因为它只返回一个布尔值 在测试了几种方法之后 令我惊讶的是 这些方法是迄今为止效率最低的 以下是我的分析 随着向量大小的增加
  • 通过增加索引之和来生成排序组合的有效方法

    对于启发式算法 我需要一个接一个地评估特定集合的组合 直到达到停止标准 由于它们很多 目前我正在使用以下内存高效迭代器块生成它们 受到 python 的启发 itertools combinations http docs python o
  • 使用 cmake add_definitions 的文件路径

    我正在尝试替换硬编码预处理器 define MY FILE PATH usr local myfile 在 cmake 中使用 add definitions add definitions DMY FILE PATH MY FILE PA
  • 包含目录中的所有文件?

    如何实现以下代码想要实现的目标 include dir In Bash HEADER all headers h echo ifndef ALL HEADERS gt HEADER echo define ALL HEADERS gt gt
  • 大数组上的 SSE 性能较慢

    我是 SSE 编程新手 所以我希望有人可以帮助我 我最近使用 GCC SSE 内在函数实现了一个函数来计算 32 位整数数组的总和 下面给出了我的实现代码 int ssum const int d unsigned int len stat
  • 在 C/C++ 中获得正模数的最快方法

    通常在我的内部循环中 我需要以 环绕 方式索引数组 因此 例如 如果数组大小为 100 并且我的代码要求元素 2 则应该给它元素 98 高级语言 例如 Python 可以简单地使用my array index array size 但由于某
  • PhoneGap 1.4 封装 Sencha Touch 2.X - 性能怎么样?

    我正在构建一个多平台平板电脑应用程序 仅使用其 Webview 使用 Phonegap 1 4 对其进行包装 然后使用 Sencha Touch 2 框架发挥我的魔力 我所说的多平台是指 iOS 5 X 和 Android 3 0 目前 到

随机推荐

  • Xcode9:修复范围内的所有内容始终处于禁用状态

    Xcode9 编辑器 修复范围内的所有内容始终处于禁用状态 我怎样才能启用它 在新的 Xcode 版本 9 2 9C40b 中进行了更新 效果非常好
  • 让 `npm install --save` 添加严格版本到 package.json

    当你跑步时npm install save somepackage 它通常会在 package json 中添加这样的内容 dependencies somepackage 2 1 0 因为版本前面带有插入符号 这意味着如果您稍后运行npm
  • 如何在knockout视图模型点击事件中访问$parent或$parents[]?

    我遇到了一种情况 我想通知祖父母或 parents 1 子视图模型中发生的点击事件 所以基本上我希望能够做到这一点 self parents 1 actionTaken 我认为这不起作用 因为绑定上下文与 viewModel 但我想听听是否
  • 是否可以对更高种类类型的类实例强制执行类型约束?

    我有一个这样定义的类型 newtype PrimeSet a P Integer deriving Eq 我还定义了一个将素数集转换为列表的函数 假设它的类型参数是Integral toList Integral a gt PrimeSet
  • JAXB 和 complexType 与其元素之一共享名称会生成不正确的代码

    我有这个 xsd 它有点糟糕 但我必须使用它来避免更改我正在编写的 servlet 的接口 请求 响应接口的 xsd 包含以下行
  • C 预处理器字符串化怪异

    我正在定义一个宏 该宏的计算结果为常量字符串 保存文件名和行号 用于记录目的 它工作正常 但我只是不明白为什么需要 2 个额外的宏 STRINGIFY and TOSTRING 当直觉简单地表明 FILE LINE include
  • 在 iOS 上的 PhoneGap 或 Cleaver (Cordova) 中加载远程 html

    我在我的本机 iOS 6 应用程序中使用 Cordova 2 4 组件 Cleaver 和嵌入式视图 到目前为止 我已经成功创建了项目结构 链接了 Cordova 库并设置了 Hello World 应用程序 该应用程序确实可以提供 设备就
  • 使用awk对字段进行排序和排列

    我现在正在尝试学习 awk 我想做一项特定的任务 我的问题与之前发布的问题范围相似 使用 awk 将列转置为行 https stackoverflow com questions 13634816 using awk to transpos
  • 如何将多个 .txt 文件读入 R? [复制]

    这个问题在这里已经有答案了 我正在使用 R 来可视化一些数据 所有这些数据都是 txt 格式 一个目录中有几百个文件 我想一次性将其全部加载到一个表中 有什么帮助吗 EDIT 列出文件不是问题 但我在从列表到内容的过程中遇到了困难 我已经尝
  • 我可以在 MySQL 中存储图像吗?

    这个问题在这里已经有答案了 可能的重复 MySQL 中的图像 https stackoverflow com questions 1665730 images in mysql 在 MySQL 中存储图像 https stackoverfl
  • 通过php在csv单元格中创建回车符

    我正在尝试动态生成一个 csv 文件 其中包含一些包含多行的单元格 例如 地址字段需要分组为单个 地址 单元格 而不是地址 城市 州等 一切进展顺利 但在过去的两天里 我尝试在代码中插入 r r n n chr 10 chr 13 以及回车
  • C# IAttachmentExecute

    我正在尝试使用I附件执行 http msdn microsoft com en us library bb776297 28VS 85 29 aspx我的 C 应用程序中的接口 使用 NET4和VS2010 MSDN 说它在Shdocvw
  • 如何在 VSCode 的 zen 模式下启用行号?

    有没有办法在 VSCode 的 zen 模式下启用行号 In your settings json插入行 zenMode hideLineNumbers false
  • SQL Server 存储过程中的可选参数

    我正在写一些存储过程 https en wikipedia org wiki Stored procedure在 SQL Server 2008 中 这里可能存在可选输入参数的概念吗 我想我总是可以传入 NULL 作为我不想使用的参数 检查
  • C#:保留类中构造函数的引用参数

    基本上我希望能够引用类实例内的变量 但我希望引用成为类变量 因此我不需要将其作为参数在类内部发送 code int num 0 myClass num print num output is 0 but i d like it to be
  • Bootstrap 轮播下一个和上一个功能不起作用

    使用最新版本并具有基本的轮播 我已经让它可以使用所有默认设置 但是当尝试添加或停止某些功能时 事情会中断或根本不起作用 我希望能够手动循环浏览图像 不希望它自动循环 我只想使用下一个和上一个按钮来循环 我在这里读过一些帖子 但解决方案不起作
  • 将闪亮应用程序部署到 Shinyapps.io 时出错

    我有一个闪亮的应用程序 它在server R file library shiny Creating the app library ggplot2 library plyr library reshape2 library scales
  • Python 3 urllib 与请求性能

    我正在使用 python 3 5 并且正在检查 urllib 模块与 requests 模块的性能 我用 python 编写了两个客户端 第一个使用 urllib 模块 第二个使用 request 模块 它们都生成二进制数据 我将其发送到基
  • 在循环中初始化变量[重复]

    这个问题在这里已经有答案了 我试图弄清楚初始化某些变量时的最佳实践是什么 我的代码现在看起来像这样 int nHexCount 0 int prevState sc state bool bOnlySpaces true bool bIsV
  • 编译器处理包含保护头的开销有多大?

    为了加速大型源文件的编译 修剪翻译单元中使用的标头数量是否更有意义 或者编译代码的成本是否远远超过处理包含保护的时间标头 如果后者是真的 那么工程工作最好花在创建更多 轻量级的标头上 而不是更少 那么 现代编译器需要多长时间才能处理有效包含