gpt4 book ai didi

c - 为什么一个代码示例比其他代码示例需要更多的时间来执行?

转载 作者:行者123 更新时间:2023-11-30 18:40:37 26 4
gpt4 key购买 nike

样本1

for(int i = 0 ; i <= 99 ; i++)
printf("Hello world");

样本2

printf("Hello world"); // 1st print
printf("Hello world"); // 2nd print
.
.
.
printf("Hello world"); // 100th print

我知道示例 1 比示例 2 需要更多时间来执行,并且示例 2 在文本段中占用更多内存。

但是,我想知道幕后发生了什么。

最佳答案

想象一下示例一被编写为以下操作序列:

i = 0
if (i <= 99)
print
i++
jump
if (i <= 99)
print
i++
jump
if (i <= 99)
print
i++
jump
...

而第二个示例很简单:

print
print
print
print
...

这非常简单,但您应该明白 - 第一个示例执行更多指令来完成循环。

作为旁注 - 这是编译器经常执行的优化之一 - 它将展开循环并编译它,就好像没有循环一样。为此,必须得出值得的结论 - 请注意,示例二将编译成更多的指令总数,并且将占用更多的内存空间(因此加载时间将更长)。

关于c - 为什么一个代码示例比其他代码示例需要更多的时间来执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25470202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com