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?