If分支或20字节的赋值,哪个通常更快
本文关键字:常更快 赋值 分支 字节 If | 更新日期: 2023-09-27 18:24:14
如果我正在为性能进行优化,并且我可以选择使用一个简单的If语句,该语句使用布尔变量作为其条件,或者我可以选择将20字节的数据从一个结构传输到更大的结构,这通常是最快的?
我不知道哪一个更快,但如果你认为它离计算机中的分支预测器发挥作用的地方足够近,你会说如果布尔值是随机的,如果分支会更慢,如果大多数时候是某种模式,如果分支比字节的传输更快吗?
编辑:
我理解这是特定于上下文的,如果只执行一次,那就无关紧要了。但是,请大致回答这个问题。如果您有一个循环,您希望哪个更快?显然,字节传输将使用主内存中的结构。
这取决于情况。分支预测失误的成本在12到25个时钟周期之间,具体取决于处理器类型。
对于4或8个字节,从L1高速缓存进行的存储器访问需要2或3个周期。但它有一条非常痛苦的长尾,L2和L3的情况会迅速上升,如果数据不在任何缓存中,那么处理器可能会停滞数百个周期,等待RAM。它存在的可能性在很大程度上取决于内存访问模式。
所以你就是不知道。你真的必须评测你的代码。