优化“for”循环

2023-12-07

std::vector<int> someVector;    
for (unsigned int i = 0; i < someVector.size(); i++)
{
   // do something
}

的值是否为someVector.size()得到计算每次?


我已经检查过海湾合作委员会探险家:

输入的代码:

#include<vector>

int sum(const std::vector<int> & someVector) {
  int s = 0;
  for (int i = 0; i < someVector.size(); i++) {
    s += someVector[i];
  }
  return s;
}

int main() {
  std::vector<int> someVector;
  return sum(someVector);
};

为 sum() 生成的程序集:

  movq  (%rdi), %rcx
  movq  8(%rdi), %rdx
  xorl  %eax, %eax
  cmpq  %rcx, %rdx
  je    .LBB0_3
  subq  %rcx, %rdx
  sarq  $2, %rdx
  xorl  %eax, %eax
  xorl  %esi, %esi
.LBB0_2:                                # =>This Inner Loop Header: Depth=1
  addl  (%rcx,%rsi,4), %eax
  incq  %rsi
  cmpq  %rdx, %rsi
  jb    .LBB0_2
.LBB0_3:                                # %._crit_edge
  ret

即尺寸保持在%rdx-- 没有电话size()每一次。

正如其他人已经指出的那样,结果可能取决于

  • 你的编译器,
  • 优化设置和
  • 您在循环中实际执行的操作(单击上面的 gcc 资源管理器链接自行尝试)。

无需计算任何内容,整个循环就会得到优化。

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

优化“for”循环 的相关文章

  • boost::multi_index_container 复合键中的 equal_range 与比较运算符

    我正在尝试从多索引容器查询结果 其中值类型是三个元素的结构 第一个值已给出 但第二个和第三个值必须大于或小于查询参数 经过搜索后 我发现必须实现自定义密钥提取器 并且这里的一些链接建议相同 但我无法实现它 boost multi index
  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的

随机推荐

  • 数据范围订阅奇怪的行为

    我在玩 swift 的Data在下面的小代码中 var d Data count 10 d 5 3 let d2 d 5 lt 8 print d2 0 令我惊讶的是 这段代码抛出异常print 而下面的代码则不然 var d Data c
  • 无 UI 的 WiX 命令行选项“/quiet”会终止正在运行的进程

    我使用 Wix 为我的应用程序创建了一个没有 UI 的安装包 此处称为 XYZ 如果我在 XYZ exe 运行时双击 MSI 它会通知我某个进程正在锁定文件 我可以选择终止锁定进程 也可以中止安装 这很好 作为用户我可以决定做什么 但是当我
  • JComboBox 上的 JScrollPane

    我制作了一个组合框 但某些元素比我的框的宽度更宽 所以我尝试添加一个水平滚动窗格 而我唯一能看到的是一个内部带有组合框的滚动窗格 当然我做错了什么 这是我没有 jscrolpane 的代码 issuerdocumentJComboBox n
  • Powershell 2 和 .NET:针对极大的哈希表进行优化?

    我正在涉足 Powershell 对 NET 完全陌生 我正在运行一个以空哈希表开头的 PS 脚本 哈希表将增长到至少 15 000 到 20 000 个条目 哈希表的键是字符串形式的电子邮件地址 值是布尔值 我只需要跟踪我是否看到过电子邮
  • 在表单身份验证中获取当前的 MembershipUser

    我想获取当前的MembershipUser从我的页面 Membership GetUser 返回空值 不能用 HttpContext Current User Identity Name 因为它根据我的配置返回我的配置文件名称以获取用户名
  • 重新训练 MobileNet SSD V1 COCO 后,Tensorflow 的 pb 和 pbtxt 文件无法与 OpenCV 一起使用

    我已关注this按照所述使用 Tensorflow GPU 重新训练 MobileNet SSD V1 的教程 使用 GPU 训练后损失为 0 5 下面有关配置的更多信息 并得到了model ckpt 这是我用于训练的命令 python m
  • 如何在maven中添加JaCoCo

    我已经使用 JUnit 编写了一个单元测试用例 现在我想在我的构建工具中添加 JaCoCo 该工具正在移动 3 2 1 我是 Maven 的新手 在添加它时 我不得不怀疑我想将它添加到依赖项或插件中吗 两者都可用 如下
  • Python:函数文档

    有没有一种方法可以检查 python 本身内部的函数或方法的作用 类似于 Matlab 中的帮助函数 我想获得函数的定义 而不必谷歌它 是的 您可以致电help whatever 在Python交互式解释器中 gt gt gt help T
  • 动态调整滚动视图中标签的大小?

    假设您有如下设置 ScrollView size hint 1 0 5 Label size hint 1 None 最初 标签没有内容 文本 如果我理解正确的话 当创建对象时 标签的高度是None 当应用程序运行时 标签的text属性设置
  • MS Excel LINEST、TREND、LOGEST 和 GROWTH 函数中的缺失值

    我在 Excel 2003 中使用 GROWTH 或 LINEST TREND 或 LOGEST 所有这些都会造成同样的麻烦 函数 但是存在一个问题 如果某些数据丢失 该函数将拒绝给出结果 You can 在这里下载文件 有什么解决方法吗
  • 登录 Microsoft SQL Server 错误:18456

    我在尝试连接到 SQL Server 时收到此错误 微软 SQL 服务器错误 18456 谁能告诉我错误代码是什么意思 如果您尝试使用 SQL Server 身份验证 进行连接 那么您可能需要修改服务器身份验证 在 Microsoft SQ
  • 不知道为什么这个函数返回一个反转的数组

    我正在做一个 JavaScript 练习 但在理清其工作原理的逻辑时遇到了一些麻烦 它基本上有一个名为 mystery 的函数 它使用一堆非常简单的函数 并返回一个你给它的数组 但顺序相反 我在白板前坐了一个小时 试图找出其背后的逻辑 但没
  • Dynamic_cast(pb) 返回 null

    在C Primer 5th 19 2 1中关于dynamic cast 它说 对于dynamic cast
  • URI:Module 的未定义方法“escape”

    我是一个研究 Ruby on Rails 的菜鸟 我正在尝试将 ruby on Rails 应用程序集成到 Quickbooks 中 我正在按照以下步骤这个视频 当我尝试按 连接到 QuickBooks 按钮进行身份验证时 我陷入了困境 我
  • 消除字符向量中非唯一元素的歧义

    给定一个由非唯一的患者姓名首字母组成的向量 init c AA AB AB AB AC 寻找消歧义如下 init1 c AA AB01 AB02 AB03 AC 即 唯一的首字母应保持不变 非唯一的首字母应通过添加两位数来消除歧义 使用指示
  • 从 boost::labeled_graph 获取节点标签

    我想检索 BGL 的labeled graph 中标记节点的标签 但找不到执行此操作的方法 以下 MWE 演示了我正在寻找的内容 g O3 question cpp o question exe I std c 11 lprotobuf l
  • VS2010 添加服务引用相对于直接 ClientBase<> 的优点

    我注意到 当在 VS2010 中使用 添加服务引用 时 会创建大量文件 其中一个文件是 Reference cs 它为服务合同创建一个 ClientBase 因此 我想知道 VS 创建的大量额外文件是否有任何优势 或者我可以自己使用 Cli
  • JavaScript 中的随机化 for 循环

    我有一个生成 html 的 for 循环 我希望这种方法随机生成元素 现在它们基本上是生成的 即 d1 d2 di 我希望它们遵循随机序列 即 d1 di di 3 di k for let i numberOfInputs i lt dl
  • 单例还是静态记录器?

    我当前的 C 应用程序是一个可执行文件 EXE 和一些 DLL 因此多个二进制文件 我想创建一个记录器 一些简单的自定义记录器 无论从何处调用它 都会写入单个文本文件 这应该在所有二进制文件 exe 和 dll 中可用 请注意 它是单线程应
  • 优化“for”循环

    std vector