我理解这些术语的定义,但我无法将它们的概念应用到代码中。在练习中,我们需要描述以下代码是空间代码还是时间代码:
for (int i=0; i<10; i++) {
printf(some_array[i]);
}
我觉得这是空间局部性,因为当访问数组的一个索引时,一旦循环迭代,就会访问下一个索引内存位置。这是正确的看待方式吗?是什么决定了代码是时间性的还是空间性的?更多例子就太好了。
这确实是一个有点愚蠢的练习。代码不是时间或空间的。
但时间局部性意味着您将在时间相对接近的情况下多次访问同一地址。你不会在这里这样做(除非你算访问i
,我猜),所以通过排除过程,你可以得出结论,这一定是空间局部性。
更准确地说,您正在访问some_array[0]
, then some_array[1]
等等。这些在地址空间中靠近在一起,所以是的,这可能“依赖”spatial地点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)