gpt4 book ai didi

c++ - 减少指令缓存未命中(在 C++ 中)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:20 24 4
gpt4 key购买 nike

假设我有一个 C++ 类,其实现如下所示:

// ...

MyClass::iterativeFunction() {
for (int i = 0; i < 1000000; i++) {
performAction(i);
}
}

MyClass::performAction(int index) {
// Block of code (non-inline-able)
}

// ...

在 C++ 级别,我是否可以控制这些方法的空间局部性,或者我是否只能希望编译器注意到相关方法并相应地优化其汇编?理想情况下,我希望它们紧挨着彼此,这样它们将一起加载到指令缓存中,但我不知道如何让编译器知道我真的希望这种情况发生。

最佳答案

在任何一种情况下,代码在进入缓存之前都无法运行。在任何一种情况下,对于 CPU 来说,代码流的去向都同样显而易见,因为该流是无条件的。所以这不会有任何区别。现代代码缓存不会在地址空间中提前获取,它会在指令流中提前获取,遵循无条件分支并根据需要预测条件分支。

所以没有理由关心这个。这不会有任何区别。

关于c++ - 减少指令缓存未命中(在 C++ 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13170687/

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