У меня есть следующий код, используя г ++ работает 3 секунды, под Microsoft компилятор работает в течение 30 секунд, и я не понимаю ...Почему код, скомпилированный в g ++, значительно быстрее, чем в компиляторе Microsoft?
struct constraint{
int bitline;
int result;
};
// this vector is filled with about 1 milion items
vector<constraint> constraints;
for (int a = 0; a < constraints.size(); ++a)
{
if (a% 100 == 0) cout << a << " "<<endl;
for (int b = a; b < constraints.size(); ++b)
{
int anded = constraints[a].bitline & constraints[b].bitline;
int ored = constraints[a].bitline | constraints[b].bitline;
// a subset of b
if (anded == constraints[a].bitline && constraints[a].result >= constraints[b].result)
{
// delete a
constraints[a].bitline = 0;
}
if (anded == constraints[b].bitline && constraints[b].result >= constraints[a].result)
{
constraints[b].bitline = 0;
}
}
}
EDIT: Я не использую оптимализацию флаги, жгуты. Запуск на windows xp 32 бит ... Пробовал без «отладки cout line» - никаких существенных изменений.
GCC, вероятно, не всегда в 10 раз быстрее, чем MSVC. –
Можете ли вы опубликовать полный код? –
Разница может заключаться в том, что используемая оптимизация или cout может быть медленной в msvc по какой-либо причине. Можете ли вы отправить вам командные строки, а также повторить попытку без строки «cout << ...»? –