Chamadas de função vs. variáveis ​​locais

Muitas vezes vejo funções em que outras funções são chamadas várias vezes em vez de armazenar o resultado da função uma vez.

ou seja,(1):

void ExampleFunction()
{ 
    if (TestFunction() > x || TestFunction() < y || TestFunction() == z)
    {
        a = TestFunction();
        return; 
    }
    b = TestFunction();
}

Em vez disso eu escreveria dessa maneira,(2):

void ExampleFunction()
{
    int test = TestFunction();
    if (test > x || test < y || test == z)
    {
        a = test;
        return;
    }
    b = test;
}

Eu acho que a versão 2 é muito melhor para ler e melhor para depurar. Mas eu estou me perguntando por que as pessoas fazem como no número 1? Existe alguma coisa que eu não vejo? Problema de desempenho? Quando eu olho para isto, eu vejo no pior caso 4 chamadas de função em número (1) ao invés de 1 chamada de função em número (2), então o desempenho deveria ser pior em número (1), não deveria?

questionAnswers(5)

yourAnswerToTheQuestion