gpt4 book ai didi

c - 减少循环中的内存访问 (C)

转载 作者:太空宇宙 更新时间:2023-11-04 00:21:35 24 4
gpt4 key购买 nike

我有一个关于减少循环中内存调用次数的问题。考虑以下代码(这不是我的代码,因为它太长了,我无法在此处表示):

for(k=0;k<n;k++)
{
y[k] = x[0]*2 + z[1];
}

如您所见,在每次迭代中,内存中的相同 block (x[0], z[1]) 都被调用。我想知道当同一个内存块被多次调用时,是否有任何方法可以减少内存访问。提前致谢。

最佳答案

简单地说,获取循环前的值:

i = x[0];
j = z[1];
for(k=0;k<n;k++)
{
y[k] = i*2 + j;
}

当然,编译器会对此进行优化(如果可以),即使您不进行任何更改,但它有助于编写更具可读性和直观性的代码。您不需要在每次迭代时都获取值,您编写的代码应该表明这一点。
忘记微优化,编写更直观和可读的代码!

正如评论中正确指出的那样,右侧表达式完全独立于循环,因此:

i = x[0]*2 + z[1];
for(k=0;k<n;k++)
{
y[k] = i;
}

关于c - 减少循环中的内存访问 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14556142/

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