- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 GCC 编译器在 C 中运行以下两个代码。
#include <stdio.h>
#include <time.h>
int
main()
{
int i, j, k, l, step, count = 0;
double duration;
float multi;
const clock_t begin_time = clock();
for (step = 1; step < 10000; step++)
for (k = 1; k < 27000; k++) {
for (i = 1; i < 5; i++)
for (j = 1; j < 9; j++) {
count++; // INSTRUCTION-1
}
};
duration = (double) (clock() - begin_time) / CLOCKS_PER_SEC;
printf("C program count = %d \n", count);
printf("clock = %f \n", duration);
}
第二段代码如下:
#include <stdio.h>
#include <time.h>
int
main()
{
int i, j, k, l, step, count = 0;
double duration;
float multi;
const clock_t begin_time = clock();
for (step = 1; step < 10000; step++)
for (k = 1; k < 27000; k++) {
for (i = 1; i < 5; i++)
for (j = 1; j < 9; j++) {
count++; // INSTRUCTION-1
multi = 9.56587458 * 8.547458748; // INSTRUCTION-2
}
};
duration = (double) (clock() - begin_time) / CLOCKS_PER_SEC;
printf("C program count = %d \n", count);
printf("clock = %f \n", duration);
}
两个代码几乎相同。唯一的区别是第一个代码在循环内只有一条指令,而第二个代码在循环内有两条指令。因此,我预计第二个代码应该需要更长的时间来执行。然而,令我惊讶的是,第一个代码的执行时间是 22.45 秒,而第二个代码的执行时间是 17.96 秒。为什么第二个代码比第一个代码执行得更快,即使它涉及更多的计算?
如果此信息相关,使用的 CPU 是 Intel Xeon E5-2670V 2.5 GHz 2 CPU-IvyBridge(20 核)。
最佳答案
如果您查看 https://godbolt.org/z/136qsc 处的程序集输出
这个函数:
double multiply(void) {
return 9.56587458 * 8.547458748; ;
}
不包括乘法指令,或常量 9.56587458 或 8.547458748。编译器注意到结果可以在编译时计算,因此没有理由在输出中包含该代码或在运行时执行它。您没有按照自己的想法对两个示例进行操作,因此不增加额外复杂性的示例并没有显着变慢是有道理的。
关于c - C代码: more instructions executes faster than fewer ones的奇怪表现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65257180/
我正在使用样式组件。我必须使用它来更改样式,因为我需要更改的内容嵌套在 Kendo React Grid 中,正如他们在文档中概述的那样:https://www.telerik.com/kendo-r
我使用 GCC 编译器在 C 中运行以下两个代码。 #include #include int main() { int i, j, k, l, step, count = 0;
我使用 GCC 编译器在 C 中运行以下两个代码。 #include #include int main() { int i, j, k, l, step, count = 0;
我有一个 ListView ,可以包含从 1 到 100 的项目,动态变化。但是,当我的项目较少时,我希望项目垂直居中显示 ListView 布局。默认情况下,Android 从顶部绘制项目。我附上了
有一个微服务,它从外部接收一批消息并将它们推送到kafka。每条消息都是单独发送的,因此对于每批我有大约 1000 条消息,每条 100 字节。消息似乎在内部占用了更多空间,因为磁盘上可用空间的下降速
我正在尝试为 React JS 项目进行身份验证,但出现以下错误: Rendered fewer hooks than expected. This may be caused by an accid
我想将我的项目 (https://softsmithy.svn.sourceforge.net/svnroot/softsmithy) 从 Subversion 迁移到 Mercurial。 我正在处
我正在使用 SQL Server(我相信是 2005 年)。 我有TableA有 2 列和 439 行(每行都是唯一的)。 +----------+ |ID | Name | +----------+
主题 我有一个文本框,用省略号 overflow hidden 的文本。只有一行是可见的。 我使用 text-overflow 和 white-space: nowrap 完成了这项工作。该元素具有固
我正在使用 Parallel.ForEach 在多个线程上工作,每次迭代都使用一个新的 EF5 DbContext,所有这些都包含在一个 TransactionScope 中,如下所示: using
给定以下组件,当我按下年龄选择器并将值更改为 15 时,我呈现了一个没有驾驶执照字段的表单,我收到错误: Uncaught Error: Rendered fewer hooks than expec
我有一个带有微调器的应用程序,其中包含很多项目和一张图像。 每次用户选择列表项时,都会执行一定数量(1 到 5)的渲染脚本来更改图像的像素。 做出大约 30 个选择后,应用程序因错误而崩溃。 这是堆栈
我的问题与 Postgres 的工作原理有关: 我有一张 table : CREATE TABLE A ( id SERIAL, name VARCHAR(32), type VA
我收到此警告:“您的配置主分区的可用空间少于 100 MB;为获得最佳效果,Apple 建议增加可用空间量。”。 Screenshot of XCode 我想知道什么是“主分区”,我该如何处理。 提前
我想根据给定行的 prob 指定的概率分布随机选择样本点。但是,当我调用np.random.choice时,我收到错误ValueError:p中非零条目少于大小。 size 到底是什么意思?我还看了i
我正在尝试在 ubuntu 中使用 Mysql workbench 生成 ER 图。 The database contains 755 Tables 错误信息 Too many objects ar
我正在尝试在 ubuntu 中使用 Mysql workbench 生成 ER 图。 The database contains 755 Tables 错误信息 Too many objects ar
我在 Playstore 上上传了一个具有不同架构的应用程序版本,现在我想用新版本上传我的应用程序但是得到了。 Error:You can't rollout this release because
我有一个 df有数十万行,我正在创建一个新的数据框,它只包含某些值组的行的最高分位数: quantiles = (df.groupby(['Person', 'Date'])['Value'].app
当我将最新版本的 native Android 应用程序上传到 Play 商店时,它首先给了我以下警告: Warning: Deactivation of this APK will result i
我是一名优秀的程序员,十分优秀!