К основному контенту

Рекомендации для пользователей про размещение объявлений о продаже автозапчастей

Сравнение GCC vs Clang

Как вы знаете, все программы представляют из себя набор машинных команд, для преобразования программного кода в машинные команды используются компиляторы. GCC и LLVM Clang - это два самых популярных на данный момент компилятора, которые используются для компиляции программ в различных дистрибутивах.

Они оба поддерживают самые новые возможности языков программирования и работают достаточно быстро. Но у каждого из них есть свои преимущества и недостатки. В этой статье мы попытаемся выполнить сравнение GCC vs Clang. Мы сравним их особенности и производительность, основываясь на тестах от phoronix. Но сначала давайте рассмотрим основные отличия.

Содержание статьи: LLVM Clang GCC Лицензирование и разработка Производительность Особенности полученного кода Выводы LLVM Clang

Разработка набора компиляторов LLVM Clang началась в 2003 году. LLVM - это не компилятор какого-либо определенного языка, а скорее основа, которая используется для генерации объектного кода для любого вида исходного кода. Проект содержит широкий спектр инструкций, поэтому это отличный способ разработки компиляторов. которые охватывают все типы аппаратных платформ.

Clang - это компилятор языков Си, С++, который транслирует исходный код в объектный код LLVM, а затем фреймворк уже проводит его оптимизацию и генерацию конечного кода. Clang хорошо интегрируется в графическую среду разработки, позволяет создавать более понятные сообщения об ошибках, а также поддерживает большинство опций GCC. GCC

GCC (GNU Compiler Collection) - это набор компиляторов, развиваемый в пределах проекта GNU. Также как и в Clang поддерживается компиляция и генерация исполняемого кода для языков программирования Си, С++. GCC используется в качестве стандартных средств разработки ядра Linux.

Разработка началась еще в 1985 году Ричардом Столманом. Сейчас компилятор поддерживает множество языков программирования и архитектур. GCC рассчитан на прямой процесс сборки программ - анализ, преобразование, оптимизация, генерация кода. А теперь рассмотрим более подробно отличия программ. Лицензирование и разработка

LLVM распространяется под более свободной лицензией - MIT/BSD, вы можете использовать код проекта в коммерческих целях или даже закрытых программах. Проект начал разрабатываться в университете штата Иллинойс, и спонсировался корпорацией Apple.

GCC имеет лицензию - GPL, а это накладывает некоторые ограничения, вы не можете использовать программу в закрытых проектах. GCC разработан специальным комитетом, в который разработчики выбираются на индивидуальной основе. Тем не менее разработкой управляют такие компании, как IBM, Red Hat, Sus, Google и Cisco. Производительность

Это один из главных параметров сравнения. Оба компилятора изначально ориентировались на максимальную производительность, но исторически так сложилось что GCC добился большей производительности работы. Но последние версии LLVM, похоже, уже преодолели этот разрыв. В некоторых тестах Clang даже обгоняет GCC. Давайте рассмотрим результаты тестов от Phoronix для сравнения gcc или clang. Все тесты выполнялись в системе Core i7 6800K Broadwell-E:



В тесте FFTW, Clang по-прежнему продолжает отставать. И новая версия даже медленнее, чем стабильная.



В тесте HMM мы тоже видим, что Clang 4.0 продолжает регрессировать.



Но вот в MAFFT, Clang 4.0 очень сильно вырос.



То же самое мы видим в композитном тесте SciMark2.



В тесте SciMark2 Monte Carlo, Clang работает медленнее чем GCC.







Тест ebizzy пройден на отлично.



Clang также быстрее, чем GCC в тесте компиляции ImageMagick.



И при компиляции PHP тоже.



 Но в многопоточном тесте Clang медленнее.



В кодировании MP3 Clang до сих пор не достиг уровня GCC.



Особенности полученного кода

Куда важнее не сама производительность компилятора gcc или clang, а скорость кода, который он будет генерировать. Компилятор Clang более молодой, чем GCC поэтому он генерирует более оптимизированный код для архитектуры x86 и x86_64.

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

В этой статье мы сделали обзор GCC vs Clang, сравнили эти два компилятора за их особенностями, рассмотрели недостатки и преимущества. Надеюсь, эта информация была вам полезной. А какой компилятор предпочитаете вы для своего проекта? Напишите в комментариях!

Комментарии


Дистанционная компьтерная помощь, удаленная компьютерная помощь онлайн.

Популярные сообщения из этого блога

Лучшие плагины для OBS Studio

Open Broadcast Software или OBS - это свободное программное обеспечение с открытым исходным кодом для стриминга аудио и видео данных в сеть интернет. Программа полностью кроссплатформенная и может работать в Windows, Linux или MacOS. Это отличная альтернатива для таких программ, как Wirecast и XSplit. OBS использует для вещания стандартный протокол обмена сообщениями в реальном времени, а поэтому может транслировать данные в любой сервис, поддерживающий это, например, Yotube. Несмотря на широкие возможности OBS, программа поддерживает еще и множество плагинов. В этой статье мы рассмотрим лучшие плагины для OBS Studio, которые вы можете использовать. Содержание статьи: Лучшие плагины OBS Studio 1. Browser Source Plugin 2. Video Source Plugin 3. Simple Scene Switcher 4. DirectShow Audio Source 5. CLR Browser Source 6. OBS Remote 7. AMD Advanced Media Framework Encoder 8. Text Source Plugin Выводы Лучшие плагины OBS Studio Чтобы найти плагины OBS Studio для Video пользо

Лучшие аналоги Paint для Linux

Когда я работал в Windows, я часто использовал стандартную программу редактора изображений Windows - Paint. Не всегда нужен очень и многофункциональный инструмент вроде Photoshop или Gimp. Иногда, чтобы подправить ту или иную картинку, дорисовать на ней несколько фигур или вставить текст достаточно простого, легкого в освоении графического редактора вроде Paint. В Linux таких программ довольно много. В этой инструкции мы рассмотрим лучшие аналоги Paint для Linux. В этот список не будут включены такие программы, как Gimp и Krita, ведь это полнофункциональные графические редакторы, векторные редакторы, такие как Inkscape мы тоже рассматривать не будем. А теперь перейдем к списку. Содержание статьи: KolourPaint MyPaint Gnome Paint XPaint Pinta mtPaint GPaint Rassam-paint Выводы KolourPaint На первом месте в списке аналогов Piant для Linux будет KoloutPaint. Это стандартный графический редактор для окружения рабочего стола KDE. Он поддерживает множество форматов изображе

Подключение OneDrive в Linux

OneDrive (Ранее известный как SkyDrive) это популярное облачное хранилище файлов от Майкрософт. Сейчас OneDrive бесплатно предоставляет 7 гигабайт пространства новым пользователям. Как вы знаете OneDrive хорошо интегрирован с другими продуктами компании  Microsoft. В OneDrive Также есть официальный клиент который автоматически загружает ваши видео и фотографии с камеры в облако. Но к сожалению этот клиент недоступен для операционных систем семейства Linux. Но не все так плохо. Сообщество открытого программного обеспечения уже нашло решение. Это opedrive-d от Boilermaker. Запустившись как демон программа автоматически синхронизирует локальную папку с облаком OneDrive. Содержание статьи: Установка Onedrive-d в Linux Настройка Синхронизация локальной папки с OneDrive Установка Onedrive-d в Linux Несмотря на то что onedrive-d разрабатывается для Ubuntu/Debian, CentOs/Fedora/RHEL поддерживается тоже хорошо. Для установки достаточно набрать несколько команд: $ git clone h