Как сравнить компиляторы

Загрузите пакет с веб-сайта и распакуйте архив запустить python setup.py install

5
задан Ric Tokyo 26 January 2009 в 12:40
поделиться

7 ответов

Гм, не знайте, где Вы слышали, что gcc является "лучший компилятор C". Это является просто самым повсеместным и также намного лучше, чем собственные компиляторы C, обеспеченные большинством коммерческих поставщиков UNIX, когда gcc появился в 1990-х.

Но что определяет "лучшее"?

  • Время для компиляции кода;
  • Размер скомпилированного кода;
  • Скорость скомпилированного кода;
  • Использование памяти скомпилированного кода;
  • Ошибки и вероятность сбоя seg;
  • Поддержка;
  • Сообщество;
  • и т.д.

Разные вещи имеют значение для различных людей.

Вот один набор метрик, выдерживающих сравнение gcc к компилятору Intel и другому сравнению с лязгом. Я уверен, что можно найти некоторые сравнения с компилятором Microsoft также.

Вообще говоря, люди не все, что коснулось relateive размером или скоростью или компилятором (или даже обязательно с размером или скоростью вывода меньше, чем фактор два), но работает ли это или не (это было реальной проблемой в десятилетие или два назад), поддерживает ли это соответствующие стандарты и имеет ли это любые причуды/ошибки/функции, которые Вы имеете к обходному решению.

11
ответ дан 18 December 2019 в 05:50
поделиться

В целом: в первую очередь, самым важным аспектом качества компилятора является правильность. Компилятор с ошибками или неожиданным поведением может действительно разрушить Ваш день. Качество получающегося кода, как скорость, размер и использование памяти, также наверху списка.

Скорость компиляции является другим аспектом, особенно при компиляции крупных проектов.

Одной вещью, которую я нахожу особенно важными, является обработка ошибок, качество сообщений, которые Вы получаете, когда компилятор встречается с материалом, это не может (или не быть) дескриптор.

11
ответ дан 18 December 2019 в 05:50
поделиться

Я знаю, что INTEL и компиляторы MS начали делать генерацию кода для инструкций SSE3/4 и делать умные вещи как разворачивающиеся циклы и поддерживать векторизацию в компиляторе. Не верный GCC делает это все же.

2
ответ дан 18 December 2019 в 05:50
поделиться

Правильность является непременным условием.

Мне также нравится

  • Иметь компилятор, который работает действительно быстро (как lcc или ocamlc)
  • Иметь компилятор, который производит действительно хороший код (как ocamlopt или MLton)

Хорошо, если они - два различных компилятора.

Я очень не хочу иметь компилятор, который заставляет программы повредиться, когда новая версия выходит. (Richard Stallman, телефон Ваш офис.)

3
ответ дан 18 December 2019 в 05:50
поделиться

Я всегда думал, что сообщения об ошибках и предупреждения имеют значение. Некоторые компиляторы сделают излишне трудным для Вас понять то, что они пытаются сказать. Другие являются более удобным для пользователя путем. Также хорошо, когда можно включить предупреждения без предупреждения компилятора Вы бесконечно о материале, это создало себя.

2
ответ дан 18 December 2019 в 05:50
поделиться

Вы имеете в виду

  • лучше всего скоростью компиляции
  • лучше всего наименьшим кодом
  • лучше всего самым быстрым кодом?

Можно создать тестовое приложение, вероятно, с некоторым противным кодом (которому нужен интеллектуальный оптимизатор), и используйте все компиляторы для тестирования его.

Сравните свои сравнительные тесты и используйте тот, который Вам нравится большинство.

0
ответ дан 18 December 2019 в 05:50
поделиться

gcc - ужасный компилятор. У него ЛУЧШАЯ техническая поддержка, возможно, из-за его цены, количества пользователей и Интернета (и Google, чтобы найти эту помощь). Но его результат от среднего до ниже среднего в лучшем случае с точки зрения качества машинного кода, который он генерирует.

0
ответ дан 18 December 2019 в 05:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: