У меня нет опыта работы с компилятором intel, поэтому я не могу ответить, отсутствуют ли у вас некоторые флаги или нет.
Однако, насколько я помню, последние версии gcc, как правило, так же хороши в оптимизации кода, как и icc (иногда лучше, иногда хуже (хотя большинство источников указывают, что в целом лучше)), так что вы могли столкнуться сСитуация, когда ICC особенно плохо.Примеры того, что может сделать каждый компилятор, можно найти здесь и здесь .Даже если gcc обычно не лучше, у вас может быть случай, который gcc распознает для оптимизации, а icc - нет.Компиляторы могут быть очень разборчивы в том, что они оптимизируют, а что нет, особенно в отношении таких вещей, как автовекторизация.
Если ваш цикл достаточно мал, возможно, стоит сравнить сгенерированный код сборки между gcc и icc.Также, если вы покажете какой-нибудь код или хотя бы расскажете нам, что вы делаете в цикле, мы могли бы дать вам более точные предположения, что приводит к такому поведению.Например в некоторых ситуациях.Если это относительно небольшой цикл, то, скорее всего, ICC пропустит одну (или некоторую, но, вероятно, не так много) оптимизацию, которая либо обладает присущим хорошим потенциалом (предварительная выборка, автовекторизация, развертывание, движение, инвариантное к циклу, ...), либо включаетОптимизации (прежде всего, встраивание).
Обратите внимание, что я говорю о потенциале оптимизации только когда сравниваю gcc с icc.В конце концов, icc может генерировать более быстрый код, чем gcc, но не так много, потому что он выполняет больше оптимизаций, а потому, что он имеет более быструю реализацию стандартной библиотеки и потому, что он умнее, где оптимизировать (на высоких уровнях оптимизации gcc получает немногоПерерасход (или, по крайней мере, раньше) касательно размера торгового кода для (теоретического) улучшения времени выполнения. Это может фактически снизить производительность, например, когда тщательно развернутый и векторизованный цикл выполняется только с 3 итерациями.