在 VC++ 中,#pragma 相当于 /O2 编译器选项(优化速度)

2024-05-13

根据msdn http://msdn.microsoft.com/en-us/library/8f8h5cxt.aspx,

/O2(最大速度)

相当于

/Og/Oi/Ot/Oy/Ob2/Gs/GF/Gy

并根据msdn http://msdn.microsoft.com/en-us/library/chh3fb0k%28VS.80%29.aspx再次,下面的编译指示

#pragma optimize( "[优化列表]", {on | off} )

在其“优化列表”中使用与 /O 编译器选项相同的字母。可用的编译指示字母有:

  • g - 启用全局优化。
  • p - 提高浮点一致性。
  • s or t - 指定短或快速的机器代码序列。
  • y - 在程序堆栈上生成帧指针。

我应该使用哪些与 /O2 具有相同的含义?


微软文档文章/O1、/O2(最小化尺寸,最大化速度) https://learn.microsoft.com/en-us/cpp/build/reference/o1-o2-minimize-size-maximize-speed?view=vs-2017对于 Visual Studio 2017 来说:

/O1 和 /O2 编译器选项是设置多个选项的快速方法 立即提供特定的优化选项。 /O1 选项设置 单独的优化选项可创建最小的代码 大多数情况。 /O2 选项设置创建 大多数情况下最快的代码。 /O2 选项是默认选项 用于发布版本。该表显示了设置的具体选项 通过 /O1 和 /O2:

Option                   Equivalent to
/O1 (Minimize Size)     /Og /Os /Oy /Ob2 /GF /Gy
/O2 (Maximize Speed)    /Og /Oi /Ot /Oy /Ob2 /GF /Gy

来自微软文档文章/O 选项(优化代码) https://learn.microsoft.com/en-us/cpp/build/reference/o-options-optimize-code?view=vs-2017:

  1. /Og实现全局优化
  2. /Oi为适当的函数调用生成内部函数。
  3. /Ot(默认设置)告诉编译器优先考虑速度优化而不是大小优化。
  4. /Oy抑制在调用堆栈上创建帧指针以加快函数调用速度。
  5. /Ob2扩展函数标记为inline or __inline以及编译器选择的任何其他函数

/G 选项是:

  1. /GF(消除重复字符串)
  2. /Gy(启用功能级链接)

The /G选项并不是严格的优化,因此我们可以/Og and /Ot, plus #pragma intrinsic(对于列表中的第 2 项),#pragma auto_inline(对于列表中的第 5 项)并且可能#pragma inline_depth. See 微软文档文章优化编译指示和关键字 https://learn.microsoft.com/en-us/cpp/build/reference/optimization-pragmas-and-keywords?view=vs-2017

也可以看看Microsoft Docs 文章 /Ox(启用最快速度优化) https://learn.microsoft.com/en-us/cpp/build/reference/ox-full-optimization?view=vs-2017这表明/Ox选项类似于/O2选项,但它不会打开/GF nor /Gy。另请参阅/Ox 和 /O2 编译器选项有什么区别? https://stackoverflow.com/questions/5063334/what-is-the-difference-between-the-ox-and-o2-compiler-options

微软文档文章按类别列出的编译器选项 https://learn.microsoft.com/en-us/cpp/build/reference/compiler-options-listed-by-category?view=vs-2017有一个编译器选项列表,其中包含其含义的链接。

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

在 VC++ 中,#pragma 相当于 /O2 编译器选项(优化速度) 的相关文章

  • 获取已安装的 Windows 应用商店应用程序列表

    有多种方法可以获取控制面板中 添加 删除程序 中已安装应用程序的列表 但我也想从 Windows 应用商店获取已安装应用程序的列表 到目前为止我还没有得到任何东西 有什么方法可以获取从 Windows 应用商店安装的应用程序列表吗 您可以在
  • 基于 MSVC 10 范围的 for 循环

    目前 在我们正在开发的一个大型 C 项目中 我们有一堆新样式的 for 循环 如下所示 for auto value values 到目前为止 我们一直只使用 gcc 4 6 进行编译 最近 一些代码库正在移植到 Windows 一些开发人
  • 禁用显示控制台窗口

    我可以在哪里禁用 Microsoft Visual C 显示控制台窗口 在您的控制台应用程序中 转到 Properties gt Linker gt System change SubSystem to Windows 并在你的代码中 代替
  • C++ 更改屏幕方向问题 -- DEVMODE dmDisplayOrientation DMDO_90 undefined

    我似乎无法编译一些 C 代码 我正在翻转显示器的方向 但 VS2008 告诉我 DMDO 90 和 DMDO 270 无法识别 error C2065 DMDO 90 undeclared identifier error C2065 DM
  • C++11 / VS2010:返回不可复制但可移动对象的容器

    考虑以下代码 include
  • clang 是否提供类似于 GCC 6.x 的函数多版本控制 (target_clones) 的功能?

    我读了这篇 LWN 文章 https lwn net Articles 691932 饶有兴趣 执行摘要 GCC 6 x 支持所谓的函数多版本控制 它可以构建同一函数的多个版本 并针对不同的指令集进行优化 假设您有一台支持 AVX2 的机器
  • 如何在MFC中对CListCtrl中的Item进行排序?

    我在 MFC 中制作了一个基于对话框的应用程序 我将 CListCtrl 控件放在对话框上 并将其视图样式设置为报告类型 我在此列表视图中有五列 所有列都是字符串类型 我想在此列表中实现排序 也就是说 当我单击某一列时 它应该对列表中的项目
  • 用于区分调试和发布版本的 CMake 变量或属性

    我想为调试和发布版本设置不同的 CMake 变量 我尝试像这样使用 CMAKE CFG INTDIR IF CMAKE CFG INTDIR STREQUAL Debug SET TESTRUNNER DllPlugInTesterd dl
  • 如何用C++判断一个字符串是否是数字?

    我在尝试编写一个检查字符串是否为数字的函数时遇到了很多麻烦 对于我正在编写的游戏 我只需要检查我正在读取的文件中的一行是否是数字 这样我就会知道它是否是参数 我写了下面的函数 我相信它工作得很顺利 或者我不小心编辑了它来阻止它 或者我有精神
  • 将对话框项分组到单个“组”(Visual Studio)

    我想创建一个对话框窗口来更改应用程序的设置 下面是 Adob e Reader 的屏幕截图 使用 Spy 后 我猜想 在右侧 所有控件 按钮 组合框 等 都属于 GroupBox 对于左侧TreeView控件中的每个类别 都有一个相应的Gr
  • Windows API 中逻辑坐标和设备坐标之间的混淆

    我一直在研究一个使用两个函数的 Visual Studio C Windows 应用程序项目SetWindowExt and SetViewportExt 我对这两个函数的作用以及为什么它们是必要的感到困惑 搜索这些函数 我得出了逻辑坐标和
  • 使用 C++/CLI 包装非托管 C++ 类库 - 问题 2 - 集合

    Note 这篇文章代表了我的询问的问题 2 两个问题中都会重复介绍部分 达到数字之前的所有文本 因为它是回答问题可能需要的背景信息 问题简介 我有一个非托管 C 库 其中包含多个 更高级别 库所共有和共享的类和函数 我现在需要向 C Net
  • 更改文件名时,录制开始会延迟 3 秒。

    在图中使用两个 ASFWriter 过滤器 一个正在制作 wmv 文件 另一个用于直播 进行流式传输 更改文件名时 录制开始会延迟 3 秒 所以 一个New WMV的头部丢失了 很烦恼啊 CAMERA InfTee 过滤器 AsfWrite
  • gcc 删除内联汇编代码

    看起来 gcc 4 6 2 删除了它认为函数中未使用的代码 test c int main void goto exit handler asm volatile jmp 0x0 exit return 0 拆解main 0x0804840
  • MSVC C4100:“应用程序”:未引用的形式参数警告

    使用 MSVC 编译时 以下代码会生成 C4100 警告 这怎么可能 显然引用了 应用程序 class ApplicationInfo public QObject Q OBJECT public static void initializ
  • 在 Windows 上使用 C/C++ 开发时省略 msvcr100.dll?

    是否可以在 Windows 上使用 C C 进行开发而不链接到 msvcr100 dll 我知道这是 Windows 的标准 c 库 但我想知道如果我没有安装 Visual Studio 或 Redistributable 软件包 我的计算
  • 如何在 vc++ 中使用samplegrabber?样本采集器未定义

    在视觉社区 2015 我有一个 C 项目 在 cpp 文件顶部我有 include stdafx h include VideoCaptureFilterSample h include VideoCaptureFilterSampleDl
  • 是否可以通过VC++属性表更改工作目录?

    我计划创建一些相关的 C 项目 这些项目都有几个共同的设置 输出路径 exe 命名约定 中间目录等 并且我已经成功设置了除工作之外的大部分我需要的设置 目录 默认情况下它设置为 ProjectDir 但我希望将其设置为 OutDir 并且我
  • 让 GCC 使用进位逻辑进行任意精度算术而不需要内联汇编?

    当使用任意精度算术 例如 512 位整数 时 有没有办法让 GCC 在不使用内联汇编的情况下使用 ADC 和类似指令 乍一看 GMP 的源代码表明他们只是为每个支持的平台提供了汇编实现 这是我编写的测试代码 它将命令行中的两个 128 位数
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反

随机推荐

  • PHP 将页面生成的标题放入

    我们在网站的所有页面中包含一个 header php 文件 因此 我们可以在 header php 文件中放置一个标题 该标题将应用于整个站点 或者在每个页面中添加一个自定义标题以更具描述性 问题是 这样做时 标题将位于 head 标签之外
  • 使用“actioncolumn”时如何执行视图控制器分离(Ext.grid.column.Action)

    在 ExtJS 4 中 我有一个包含操作列的网格 每当触发该操作时 我想执行 我的操作 如果没有 MVC 这将如下所示 xtype gridpanel columns xtype actioncolumn items handler fun
  • 导入邻居模块时如何正确使用导入

    我的项目目录看起来是这样的 project moduleA a py init py moduleB b py init py 在文件a py中我想从b py导入函数 pycharm建议我这样做 file a py from moduleB
  • static_cast 到相同类型会引入运行时开销吗?

    我有一个结构模板 有两种类型 T and S 并在某些时候使用static cast从一种类型转换为另一种类型 经常出现这样的情况T and S是同一类型 设置的简化示例 template
  • 这个shared_ptr是如何自动转换为裸指针的呢?

    我正在学习enable shared from this现在是 C 11 有一个例子让我很困惑 如何shared ptr返回类型shared from this 可以转换为这个原始指针吗 include
  • 如何根据纬度和经度获取国家名称

    如何使用 C 从纬度和经度获取国家 地区名称 我正在使用 Bing Map API Location location12 new Location location Latitude location Longitude MapLayer
  • Javascript中“从长重新定义为双”是什么意思

    我读了Javascript文档才知道鼠标事件 clientX https developer mozilla org en US docs Web API MouseEvent clientX 我不明白何时以及为什么使用 从长到双重新定义
  • 以编程方式识别 PDF 文件中的扫描文本 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 PDF 文件 其中包含我们需要导入数据库的数据 这些文件似乎是打印的字母数字文本的 pdf
  • 将 POST 从请求转换为 GAE urlfetch

    我正在使用 PayPal 付款 这是它如何正确工作的requests res requests post get payment info url headers headers data params res data res json
  • 检查 UITableViewCell 是否完全可见

    如何检查 UITableViewCell 在屏幕上是否完全可见 不被选项卡或导航栏切断 我可以使用以下代码获取可见单元格 NSArray indexes tableView indexPathsForVisibleRows 但我想排除屏幕中
  • Android Studio 调试失败,错误:任务 ':app:preDexDebug'.Pl 执行失败

    当我运行我的项目时 它在标题中显示错误 解决办法是什么 apply plugin com android application android compileSdkVersion 24 buildToolsVersion 24 0 0 d
  • jQuery .getJSON 与 .post 哪一个更快?

    Using getJSON or post 我正在尝试通过仅用于 AJAX 请求的页面发送一些参数 并获取 JSON 或 html 片段中的一些结果 我想知道哪个更快 假设 HTML 文件只是纯布尔文本 true 或 false 正如其他人
  • Stripe API - 代理后面的 PHP Curl 请求

    我正在尝试使用 php 和curl 在代理后面向 stripe api 发出请求 如果我不在代理后面 则以下内容有效 ch curl init curl setopt ch CURLOPT URL https api stripe com
  • 列出某个类的所有对象

    好的 我的问题如下 我有一个用这个构造函数描述宠物的类 public function construct name type age 所以我想做的是制作一些宠物对象 然后我想打印这个类的所有对象的所有属性 这样它看起来像this http
  • 安装pyserial Mac OS 10.10?

    尝试使用 Python 2 7 与 Arduino 串行端口进行通信 已下载 pyserial 2 7 解压缩并将文件夹 pyserial 文件夹放入 python 应用程序文件夹中 没有工作错误消息 没有名为 pyserial 的模块 对
  • AES 在汇编中的实现 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 大家好 我正在尝试构建一个代码来演示
  • 检查 Python 中的唯一输出

    我昨天遇到了一个有趣的数学问题并解决了它 但是根据我编写的代码 我必须进行键盘中断 否则它将永远运行 哈哈 所以我把它改为有结束条件 但现在它只打印 1 个解决方案并停止 问题是这样的 你有数字 123456789 按这个顺序 在每个数字之
  • Prism / MEF:如何在不硬编码区域名称的情况下注册ViewWithRegion

    我们正在构建一个 WPF Prism 应用程序 我们有不同的开发人员从事不同的模块项目 并且多个模块被注入到主应用程序外壳中 主应用程序也是一个单独的项目 我们还希望能够在不同的应用程序中使用这些模块 我们不希望在每个应用程序中都使用相同的
  • 如何在多模块 spring-boot maven 项目中构建特定模块

    我创建了一个多模块 Spring Boot Maven 项目 但是当我使用 mvn clean package pl module2 spring boot run 在控制台中 它告诉我 module1 中的某些类找不到 但我已经在 mod
  • 在 VC++ 中,#pragma 相当于 /O2 编译器选项(优化速度)

    根据msdn http msdn microsoft com en us library 8f8h5cxt aspx O2 最大速度 相当于 Og Oi Ot Oy Ob2 Gs GF Gy 并根据msdn http msdn micros