![]() |
Добрейшего времени суток всем форумным! На связи Receiver со статьёй о скорости работы IntelliSense и предложением лучшего аналога. Данная статья написана преимущественно для CMake Enjoyers, но тулза о которой пойдёт речь способна работать практически везде. Статья предлагает вам путь, которым можно пойти после освоения экосистемы Microsoft и по сути своей является некой подложкой статьи от @SR_team. Вам не стоит бояться на своём пути препятствий или потраченного времени и двигаться только вперёд.
https://forum.antichat.xyz/attachments/28511361/ Рисунок 1— Расширение «C/C++ Extension Pack» из магазина расширений Visual Studio Насколько вас устраивает скорость работы IntelliSense? Вероятно вряд ли вы дадите ему больше 5 баллов на 10 бальной шкале и это будет правдой. Особенно хорошо падение скорости ощущается на проекте содержащим 30+ заголовочных файлов и хотя бы одним подключением заголовка Код:
График 1 — Cравнение производительности во времени компиляции тяжёлого проекта с 3D-графикой: https://forum.antichat.xyz/attachments/28511361/ График 2 — Сравнение производительности во времени выполнения при вычислении числа Фибоначчи от 200 миллионов: https://forum.antichat.xyz/attachments/28511361/ На данных графиках вы можете увидеть что MSVC дичайше отстаёт по скорости от Clang, а от Rust базирующемся на инфраструктуре LLVM и подавно. Да, это графики сравнения именно Clang и MSVC, но они так же верны и для Clangd, ведь под капотом он базируется на инфраструктуре Clang. Интересно в чём же заключается причина такого аутсайдерства MSVC? Ниже представлен список некоторых отличительных особенностей работы Clang:
После увиденного мне захотелось полностью первести свой проект на архитектуру LLVM, так же большим плюсом ещё была поддержка Inline Assembly на X64. Как же это можно было сделать без особой боли в попенции? А оказывается у LLVM есть свободно поставляемая утилита под названием Clang-cl. Это фронтенд для компилятора Clang, который предоставляет интерфейс командной строки, совместимый с компилятором Microsoft Visual C++ (MSVC). Это и позволяет использовать Clang в качестве альтернативы компилятору MSVC в среде разработки Microsoft Visual Studio. Я быстренько перенастроил CMake, но в работе у меня по прежнему оставался IntelliSense, который никак не мог справиться с быстрым анализом моих проектов и отдавал подсказки аж спустя минуту после написания строчки кода. Мне стало интересно какие ещё полезные тулзы может предложить мне LLVM и как оказывается он ещё много чего может показать:
https://forum.antichat.xyz/attachments/28511361/ Рисунок 2 — Расширение «clangd» из магазина расширений Visual Studio Все эти расширения являются аналогами на архитектуре LLVM для набора расширений «C/C++ Extension Pack». Первым делом вам будет необходимо установить LLVM в связке с Clang. Делается это всё по любой первой инструкции в интернете. Оригинальный образ вы можете взять с https://releases.llvm.org/download.html. Теперь давайте перейдём к важным заметкам по настройке всего этого добра:https://forum.antichat.xyz/attachments/28511361/ Рисунок 3 — Расширение «Clang-Format» из магазина расширений Visual Studio https://forum.antichat.xyz/attachments/28511361/ Рисунок 4 — Расширение «CodeLLDB» из магазина расширений Visual Studio https://forum.antichat.xyz/attachments/28511361/ Рисунок 5 — Прописанный путь до Clangd в 'Settings -> Extensions -> clangd' [/FONT] https://forum.antichat.xyz/attachments/28511361/ Рисунок 6 — Прописанный путь до Clang-Format в 'Settings -> Extensions -> Clang-Format' https://forum.antichat.xyz/attachments/28511361/ Рисунок 7 —Включённое форматирование при сохранении файла в 'Settings -> Text Editor -> Formattng' https://forum.antichat.xyz/attachments/28511361/ Рисунок 8 — Установленный форматировщик в 'Settings -> Text Editor' Так же для работы clangd понадобится включить генерацию Код:
compile-commands.jsonMakefile: Код:
setПомимо Visual Studio Code вы так же можете использовать это всё в Visual Studio с CMake Based Project через расширения Visual Studio. Если хотите использовать лишь сам компилятор Clang в MS Based проектах, то в Visual Studio Installer установите галочки на «C++ Clang compiler for Windows» и «MSBuild support for LLVM toolset». https://forum.antichat.xyz/attachments/28511361/ Рисунок 9 — Установка компилятора Clang в Visual Studio Installer. Теперь мой проект полностью работает на LLVM, компилируется за считанные секунды благодаря Clang, показывает узкие места в коде с Undefined Behavior силами Clang-Tidy, форматируется по Google-style с помощью Clang-Format и конечно же моментально выдаёт подсказки. На моём компьютере Clangd одноразово анализирует AST (синтаксическое дерево кода) всех подключённых Windows-заголовков меньше чем за минуту и сохраняет результаты в кэше, к которому в будущем и обращается. Тёма о жесточайшей раскачке Visual Studio Code под C++ IDE: https://www.blast.hk/threads/202243/. Бонусом там есть супер классный пропатченный clangd, за что огромное спасибо @SR_team. Ссылки на расширения:
Цитата:
|
что-то ты перестарался, достаточно было лишь установить clion + vs для компиляции
|
Мне в LLVM нравится наличие морфера, все самодельные на ассемблере и прочем даже рядом не стояли.
LLVM obfuscator имею ввиду. |
| Время: 18:51 |