Каковы основные различия между " gc " и "gccgo"?


каковы основные различия между двумя популярными компиляторами Go, " gc " и "gccgo"? Построить производительность? Производительность во время выполнения? Параметры командной строки? Лицензирование?

Я не ищу мнения о том, что лучше, просто основной обзор их различий, поэтому я могу решить, что лучше для моих нужд.

1 58

1 ответ:

вы можете увидеть больше в "настройки и использования поэтому его можно использовать":

поэтому его можно использовать, компилятор для языка пойти. Компилятор gccgo-это новый интерфейс для GCC.
Обратите внимание, что gccgo не является компилятором gc

Как пояснили в "поэтому его можно использовать в GCC 4.7.1" (июль 2012 года)

язык Go всегда определялся спецификацией, а не реализацией. Команда Go написала два разных компилятора, которые реализуют что спецификации: GC и поэтому его можно использовать.

  • Gc является исходным компилятором, и инструмент go использует его по умолчанию.
  • поэтому его можно использовать для другой реализации различного направления

по сравнению с gc, gccgo медленнее компилирует код, но поддерживает более мощные оптимизации, поэтому программа с привязкой к процессору, построенная gccgo, обычно работает быстрее.

также:

  • компилятор gc поддерживает только самые популярные процессоры: x86 (32-разрядные и 64-разрядные) и ARM.
  • Gccgo, однако, поддерживает все процессоры, которые поддерживает GCC.
    Не все эти процессоры были тщательно протестированы для gccgo, но многие из них, включая x86 (32-бит и 64-бит), SPARC, MIPS, PowerPC и даже Alpha.
    Gccgo также был протестирован на операционных системах, которые компилятор gc не поддерживает, особенно Solaris.

Если вы устанавливаете команду go из стандартного выпуска Go, он уже поддерживает поэтому его можно использовать через : go build -compiler gccgo myprog.


короче: gccgo: больше оптимизации, больше процессоров.


однако,прокомментировал by OneOfOne (источник), нередко возникает десинхронизация между пойти поддерживается поэтому его можно использовать, и последний пойдет выброс:

поэтому его можно использовать поддерживает только до версии идут В1.2, так что если вам нужно все новое в 1.3 / 1.4 (tip) gccgo не может быть использовано. -

GCC релиз 4.9 будет содержать пойти 1.2 (не 1.3) версию поэтому его можно использовать.
Графики выпуска для проектов GCC и Go не совпадают, что означает, что 1.3 будет доступен в ветке разработки, но что следующий выпуск GCC, 4.10, скорее всего, будет иметь версию Gccgo Go 1.4.


twotwotwo упоминает в комментарии the слайд презентации Брэда Фицпатрика

поэтому его можно использовать для получения хорошего кода
... но не хватает анализа побега: убивает производительность со многими небольшими выделениями + мусор
... ГК не уточняет. Плохо для 32-битных.

twotwotwo добавляет:

другое слайд упоминает, что не поэтому его можно использовать для АРМ генерации кода шаткий.
Предполагая, что это интересный вариант для вашего проекта, вероятно, сравните двоичные файлы для вашего варианта использования в целевой архитектуре.


Как peterSOкомментарии, Go 1.5 сейчас (3-й квартал/4 квартал 2015 года) означает:

компилятор и среда выполнения теперь полностью написаны в Go (с небольшим ассемблером).
C больше не участвует в реализации, и поэтому компилятор C, который когда-то был необходим для построения дистрибутива, ушел.

"перейти в" слайд - сделать, говоря:

C ушел.
Примечание: поэтому его можно использовать еще идет сильный.