Wywołania funkcji a zmienne lokalne

Często widzę funkcje, w których inne funkcje są wywoływane wielokrotnie, zamiast jednorazowego przechowywania wyniku funkcji.

to znaczy(1):

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

Zamiast tego napisałbym to w ten sposób(2):

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

Myślę, że wersja 2 jest o wiele lepsza do czytania i do debugowania. Ale zastanawiam się, dlaczego ludzie robią to jak w numerze 1? Czy jest coś, czego nie widzę? Problem z wydajnością? Kiedy patrzę na to, widzę w najgorszym przypadku 4 wywołania funkcji w liczbie (1) zamiast 1 wywołania funkcji w numerze (2), więc wydajność powinna być gorsza w liczbie (1), czyż nie?

questionAnswers(5)

yourAnswerToTheQuestion