- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 C 的经验相对有限,而且我对其在现代 CPU 上的编译输出缺乏很好的理解。背景:我正在为 Android 应用程序进行图像处理。我读过无分支机器代码是内部循环的首选,所以我想知道这样的代码之间是否存在显着的性能差异:
if (p) { double for loop, computing f() }
else if (q) { double for loop, computing g() }
else { double for loop, computing h() }
与在循环内进行条件检查的不太详细的版本相比:
for (int i = 0; i < xRes; i++)
{
for (int j = 0; j < yRes; j++)
{
image[i][j] = p ? f() : (q ? g() : h());
}
}
在此代码中,p 和 q 是类似于 mode == 3
的表达式,其中 mode
被传递到函数中并且在函数内从未更改。我有三个简单的问题:
(1) 第一个更详细的版本会比第二个版本编译成更高效的代码吗?
(2) 对于第二个版本,如果我在循环上方评估并存储 p
和 q
的结果,性能会提高,这样我就可以替换 bool 表达式在带有变量的循环中?
(3) 我是否应该担心这一点,或者分支预测(或其他一些优化)会确保循环中的 bool 表达式几乎永远不会被评估?
最后,如果有人能说出这 3 个问题的答案是否取决于架构,我会很高兴。我对主要的 Android NDK 平台感兴趣:ARM、MIPS、x86 等。提前致谢!
最佳答案
看来这个问题已经得到了很好的回答 here:编译器可能会执行循环取消切换,从循环中删除条件并自动生成循环的 3 个副本,就像 stark 一样建议。此外,从那里和上面给出的评论来看,分支预测对于像这样的循环来说似乎非常有效。
关于c - 分支预测会对接下来的 C 循环产生什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30535817/
这个想法是:(1) 一个大小适合内容物的外箱。(2) 向左浮动的 Logo 。(3) 两行相互堆叠的文本对接至 Logo 的右侧。(4) 顶行文本框将占据 Logo 定义的垂直空间的 30%,下行文本
我有一些 HTML 目前看起来像这样(在几个不同的页面中;一个页面将有多个这样的页面): 通过 JavaScript,这将在运行时以编程方式填充类似于以下内容: ...
当我将 View 拖到工作台窗口之外时,该 View 将变成分离 View 。 Eclipse 帮助说(工作台用户指南 -> 任务 -> 使用 View 和编辑器 -> 分离 View 和编辑器):“
在Form中有ToolStrip和Panel。 ToolStrip 的 Dock 值设置为 Top,Panel 的设置为 Fill。但是 ToolStrip 介入 Panel 并隐藏 Panel 的第
有没有关于在 WPF 中进行 AppBar 停靠(例如锁定到屏幕边缘)的完整指南?我知道需要进行 InterOp 调用,但我正在寻找基于简单 WPF 表单的概念证明,或者可以使用的组件化版本。 相关资
我是一名优秀的程序员,十分优秀!