if 语句的性能与使用接口相比如何

本文关键字:接口 语句 性能 if | 更新日期: 2023-09-27 18:35:48

当应用程序状态发生变化时,应用程序循环(或游戏循环,无论它叫什么)现在必须执行一组不同的指令。通常,这意味着使用 if 语句。

我发现使用接口和接口引用变量可以减轻对 if 语句的需求,并且它使状态更改看起来更好。

class red implements IColor
class blue implements IColor
IColor colorState;
Application loop
{
    colorState.drawColor
}

这是我所说的一个示例,说明我所说的接口消除了对 if 语句的需求。现在,当您想将状态从红色更改为蓝色时,您只需这样做

colorState = a reference to a blue instance;       

但我想知道一个 if 语句是否像这样简单

if (bool)
    stuff
else
    stuff

比界面差吗?我通常知道语句是否应该昂贵,并且分支预测器会发挥作用,但是这里甚至预测了分支吗?

if 语句的性能与使用接口相比如何

您正在将"State"模式的典型实现与 if 语句进行比较。布尔表达式是什么并不重要,至少会有一个分支点。但是,如果状态不经常更改,则大多数情况下将正确预测分支。

然而,效率并不是"状态"模式的最大优势之一:它为熟悉该概念的程序员提供了更好的可读性,并且它还通过保持与状态相关的更改紧密相连来减少维护责任。大多数情况下,分支的潜在低效率与状态实现完成的实际"有效负载"工作的 CPU 要求相比相形见绌。