Порівняння gcc vs clang
Відео: Compilers Clang LLVM C ++
Як ви знаєте, всі програми являють собою набір машинних команд, для перетворення програмного коду в машинні команди використовуються компілятори. GCC і LLVM Clang - це два найпопулярніших на даний момент компілятора, які використовуються для компіляції програм в різних дистрибутивах.
Вони обидва підтримують найновіші можливості мов програмування і працюють досить швидко. Але у кожного з них є свої переваги і недоліки. У цій статті ми спробуємо виконати порівняння GCC vs Clang. Ми порівняємо їх особливості і продуктивність, грунтуючись на тестах від phoronix. Але спочатку давайте розглянемо основні відмінності.
LLVM Clang
Розробка набору компіляторів LLVM Clang почалася в 2003 році. LLVM - це не компілятор якогось певного мови, а скоріше основа, яка використовується для генерації об`єктного коду для будь-якого виду вихідного коду. Проект містить широкий спектр інструкцій, тому це відмінний спосіб розробки компіляторів. які охоплюють всі типи апаратних платформ.
Відео: The GCC Difference
Clang - це компілятор мов Сі, С ++, який транслює вихідний код в об`єктний код LLVM, а потім фреймворк вже проводить його оптимізацію і генерацію кінцевого коду. Clang добре інтегрується в графічне середовище розробки, дозволяє створювати більш зрозумілі повідомлення про помилки, а також підтримує більшість опцій GCC.
GCC
GCC (GNU Compiler Collection) - це набір компіляторів, що розвивається в межах проекту GNU. Також як і в Clang підтримується компіляція і генерація коду, для мов програмування Сі, С ++. GCC використовується в якості стандартних засобів розробки ядра Linux.
Розробка почалася ще в 1985 році Річардом Столманом. Зараз компілятор підтримує безліч мов програмування і архітектур. GCC розрахований на прямий процес складання програм - аналіз, перетворення, оптимізація, генерація коду. А тепер розглянемо більш детально відмінності програм.
Ліцензування та розробка
LLVM поширюється під більш вільною ліцензією - MIT / BSD, ви можете використовувати код проекту в комерційних цілях або навіть закритих програмах. Проект почав розроблятися в університеті штату Іллінойс, і спонсорував корпорацією Apple.
Відео: C ++ templates and optimizing for size
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.
Відео: Visual Studio with Clang
Особливості отриманого коду
Куди важливіше не сама продуктивність компілятора gcc або clang, а швидкість коду, який він буде генерувати. Компілятор Clang більш молодий, ніж GCC тому він генерує більше оптимізований код для архітектури x86 і x86_64.
Clang не так досяг успіху в варіанті з x86, але зате він генерує більш продуктивний код для архітектури ARM. Крім того, Clang не виконує спрощення вихідного коду, тому вся структура буде перенесена в готову програму. Це полегшує можливості налагодження, а також дозволяє робити деякі оптимізації на рівні вихідного коду.
висновки
У цій статті ми зробили огляд GCC vs Clang, порівняли ці два компілятора за їх особливостями, розглянули недоліки та переваги. Сподіваюся, ця інформація була вам корисною. А який компілятор ви надаєте перевагу для свого проекту? Напишіть в коментарях!
- Популярні мови програмування linux
- Статті про windows
- Програмування під linux
- Келебії докса - введення в програмування на go
- Кращі онлайн компілятори
- Як встановити tar gz в ubuntu
- Vim vs emacs. Що краще?
- Що краще deb або rpm
- Чим архітектура arm відрізняється від x86
- Порівняння mysql і postgresql
- Відбувся реліз openmandriva lx 3.0
- Порівняння openoffice і libreoffice
- Вивчаємо sass. Стиль написання коду.
- Установка pycharm ubuntu 16.04
- Установка qt ubuntu 16.04
- Таблична верстка vs блокова верстка
- Продуктивність ubuntu 16.04 vs ubuntu 16.10
- Продуктивність macos vs ubuntu 16.04
- Порівняння arduino vs raspberry
- Перетворення коду з es6 в es5.
- Установка gcc в ubuntu 16.04