Ответ 1
бенчмаркинг - это сама художественная форма, обычно легко манипулировать результатами, чтобы показать все, что вы хотите. Я бы не ожидал, что компиляторы будут генерировать одни и те же результаты, за исключением очень маленьких тестовых примеров, а иногда и в тех небольших тестовых случаях их результаты либо идентичны, либо иногда значительно отличаются от того, как ваш тест выявил оптимизацию, которую один компилятор знает/использует, а другой другой не делает.
Я обычно отслеживал такие вещи (числа производительности компилятора) с помощью dhrystone, но в случае известных тестов (не то, что dhrystone означает много больше, но других), вы можете обнаружить, что некоторые компиляторы настраиваются на просмотр хорошо под ориентирами, возможно, за счет чего-то другого.
Нет правильного ответа, нет универсального "лучшего", это все в глазах смотрящего, вы. Какой инструмент вам удобнее использовать, который вам больше нравится, например, для gui или симпатичных цветов или звуковых карт или что-то еще. И идите оттуда.
Компилятор gnu, как правило, для приложений, которые я тестировал, не создает код как "быстрый", который является моим эталоном, по сравнению с другими, но есть люди, которые используют бесплатные инструменты gnu, поэтому поддержка для него значительно шире из-за к числу веб-страниц и форумов и примеров. gnu также не имеет ограничения по размеру, но может потребоваться больше обучения или что-то еще, чтобы встать и работать...
Cortex-ms разделяются на группы armv6m и armv7m, v6m (cortex-m0) имеет только небольшое количество расширений большого пальца2, у armv7m есть около 150 расширений thumbv2 для большого пальца, поэтому вам нужно знать, что ваши инструменты поддерживать и не использовать неправильные вещи на неправильном чипе. Тогда компиляторы, если они знают все это, могут и будут производить разные комбинации команд из того же исходного кода. Кроме того, в рамках одного и того же компилятора или семейства, использующего разные параметры командной строки, вы можете/получите значительно другой код. И затем, помимо этого, с помощью cortex-m4 с кешем, если у вас есть такая вещь, в зависимости от того, как код лежит в строках кэша, вы можете получить значительно отличающуюся производительность, поэтому бенчмаркинг - это исследовательский проект сам по себе для каждого блога C, который вы хотите проверить. Диапазон производительности внутри одного компилятора может затенять другой компилятор или перекрытие может быть достаточно, чтобы не иметь значения.
Если у вас есть доступ к инструментам, которые вы профессионально добавляете к себе, учась использовать конкурирующие инструменты и быть в состоянии идти на работу и/или в свою работу, выберите то, что вы видите в качестве правильного инструмента для работы или заходите в дом в Киле и иметь возможность работать сразу или дом гну и работать сразу. Если вы можете потерять работу, если вы только gnu, а работа - для дома в Киле.