それぞれのMat変数のサイズは不変として,以下の様なループ処理

cv::Mat a, b, c;
while(1) {
    a = (b == b) & c;
}

cv::Mat a, b, c, d;
while(1) {
    d = b == b;
    a = d & c;
}

では,後者のほうが若干速い。その理由は,式テンプレート MatExpr をオペランドにとる演算は,加減乗除と要素毎の積(mul),負号,絶対値の演算しかない*1ので,それ以外の演算(ここでは & 演算)でオペランドが一時オブジェクトの Mat に変換される。後者は d で一時オブジェクトは生成されないので,この点で後者の方が速くなる,と思われる。

*1:opencv2/core/mat.hpp:1246くらいから