动态分支预测什么时候有用?

When will dynamic branch prediction be useful?

对于静态分支预测,总是假设该分支未被采用,而对于动态分支预测,如果该分支在此之前被采用,则更有可能再次被采用。但是我无法想出这有用的情况吗?什么应用程序将从中受益?为什么不直接使用静态分支预测?

    boolean b = compute something;
         :
    for (int j=0; j<1000000; j++)
        if (b) one statement;
        else another statement;

if 将导致条件分支每次都采用相同的 taken/not 结果,但下一个 运行 可能会有所不同。

(我知道可以通过 if 控制几个 if-free for 循环来更好地编写代码,但这不是这里的重点)