Версия 1 >:
Код: Выделить всё
template void abs_matrin(std::vector &x) {
typename std::vector::iterator i2;
for (typename std::vector::iterator i = x.begin(); i != x.end(); ++i) {
for (i2 = i->begin(); i2 != i->end(); ++i2) {
#### CODE TO BE COMPARED ###
if (*i2 < 0) {
*i2 *= -1;
};
############################
};
};
};
Версия 2:
Код: Выделить всё
#include
template void abs_matrin(std::vector &x) {
typename std::vector::iterator i2;
for (typename std::vector::iterator i = x.begin(); i != x.end(); ++i) {
for (i2 = i->begin(); i2 != i->end(); ++i2) {
#### CODE TO BE COMPARED ###
if (*i2 < 0) {
*i2 = abs(*i2);
};
############################
};
};
};
Код: Выделить всё
for (int i = 0; i < 10000000; ++i) {
std::vector matr = {{-11, -2, -3}, {-4, -165, -1116}, {-7, 8, 9}};
abs_matrin(matr);
};
Параметры компиляции — это просто g++ file.cpp.Может кто-нибудь это объяснить?
Я новичок в C++, поэтому не могу объяснить разницу.
Заранее спасибо
Изменить
С флагом оптимизации -O3 я не вижу большой разницы для обеих версий.
Это около 0,780 секунды для обеих версий.
Подробнее здесь: https://stackoverflow.com/questions/791 ... t-if-a-0-a