Это действительно простая проблема:
Я программирую программу Go. Должен ли я представить плату с QVector<int>
или QVector<Player>
, где
enum Player
{
EMPTY = 0,
BLACK = 1,
WHITE = 2
};
Я предполагаю, что, конечно, использование Player вместо целых будет медленнее. Но я удивляюсь, насколько больше, потому что я считаю, что использование enum
- лучшее кодирование.
Я провел несколько тестов относительно назначения и сравнения игроков (в отличие от int
)
QVector<int> vec;
vec.resize(10000000);
int size = vec.size();
for(int i =0; i<size; ++i)
{
vec[i] = 0;
}
for(int i =0; i<size; ++i)
{
bool b = (vec[i] == 1);
}
QVector<Player> vec2;
vec2.resize(10000000);
int size = vec2.size();
for(int i =0; i<size; ++i)
{
vec2[i] = EMPTY;
}
for(int i =0; i<size; ++i)
{
bool b = (vec2[i] == BLACK);
}
В основном, он только на 10% медленнее. Есть ли что-нибудь еще, что я должен знать, прежде чем продолжить?
Спасибо!
Изменить: разница в 10% не является плодом моего воображения, она, по-видимому, специфична для Qt и QVector. Когда я использую std::vector, скорость те же