Bool wolniejszy od int?

0

Zupełnie przez przypadek zauważyłem pewien fenomen. Weźmy takie dwa kody:

    vector<vector<bool>> test;
    for (int I=0;I<200;I++)
    {
        vector<bool> test0;
        for (int J=0;J<200;J++)
        {
            test0.push_back(false);
        }
        test.push_back(test0);
    }
    vector<vector<char>> test;
    for (int I=0;I<200;I++)
    {
        vector<char> test0;
        for (int J=0;J<200;J++)
        {
            test0.push_back(0);
        }
        test.push_back(test0);
    }

Fenomen polega na tym, że ten pierwszy wykonuje się wyczuwalnie wolniej niz ten drugi, nawet w przypadku, gdy w tym drugim zamiast char będzie int. Używam Qt Creator pod Windows XP.

O ile wiem, typ bool zajmuje jeden bajt, więc bool i char są praktycznie identyczne z tą różnicą, że bool ma 2 wartości, a char ma 256 różnych wartości. Gdzie tu jest haczyk?

4

Bo std::vector<bool> to specjalizacja nastawiona na zminimalizowanie zużycia pamięci. Poczytaj: http://www.cplusplus.com/reference/vector/vector-bool/

1 użytkowników online, w tym zalogowanych: 0, gości: 1