-1

如果我正在优化性能,并且我可以选择使用一个简单的 If 语句,该语句使用布尔变量作为条件,或者我可以选择将 20 字节的数据从一个结构传输到一个更大的结构,这通常是最快的?

我不知道哪个更快,但如果你认为它足够接近计算机中的分支预测器将发挥作用,你会说如果布尔值是随机的,if 分支会更慢,如果它是一些大多数情况下,if 分支会比传输字节快吗?

编辑:

我知道这是特定于上下文的,并且如果仅执行一次也没关系。但是,请笼统地回答这个问题。如果你有一个循环,你希望哪个更快?显然,字节传输将使用都在主内存中的结构。

4

1 回答 1

4

这得看情况。取决于处理器类型,分支错误预测的成本在 12 到 25 个时钟周期之间。

从 L1 高速缓存访​​问内存需要 2 或 3 个周期,用于 4 或 8 个字节。但是它有一个非常长的痛苦尾巴,这对于 L2 和 L3 迅速上升,如果数据不存在于任何缓存中,那么处理器可能会停滞数百个周期等待 RAM。它存在的可能性在很大程度上取决于内存访问模式。

所以你只是不知道。您确实必须分析您的代码。

于 2013-07-20T17:51:00.140 回答