Компиляция идет медленно
Компиляция даже самой простой программы (например, Blink) происходит очень медленно, полоса прогресса часто зависает на полминуты почти на полминуты.
Это нормально? Я понимаю, что не все компьютеры одинаково быстры, но между 3 и 30 секундами есть огромная разница
изменить
Из отчета следует, что каждый раз, когда я переключаю программы, они полностью перестраиваются:
Параметры сборки изменены, все перестроено
даже если ничего не изменилось. Как избежать полной перестройки?
@Joris Groosman, 👍7
Обсуждение6 ответов
Я бы скачал версию без установки и попытался скомпилировать в ней скетч блинка. Это позволит вам узнать, связана ли проблема с конкретным компьютером или с вашей установкой. Я столкнулся с чем-то подобным с библиотекой, которая не обновлялась должным образом между версиями, что приводило к всевозможным ошибкам.
Появление «Параметры сборки изменены, все перестроено» (как указано в отредактированном вопросе и показано на снимке экрана), вероятно, вызывает большую задержку. Я верю (правильно это или нет), что многие библиотеки перестраиваются, когда появляется это сообщение. Обычно библиотеки следует пересобирать только при первоначальной установке или при изменении типа целевой платы.
тема arduino.cc, «"Параметры сборки изменены, все перестроено", даже если ничего не меняется ==> очень медленный», с 2014 года рассматривает проблему поверхностно, просто указывая, что бета-версия Arduino 1.5.8 подходит для плат Yun и Arduino Due, а не для «обычных плат Arduino».
Тема Google code 2011 года, скорее всего, неактуальна, но стоит попробовать шаги, упомянутые в сообщениях № 14 и 15 — например, запуск arduino по пути без пробелов в именах — если ваша платформа — MS Windows. Если Arduino IDE не может найти свои параметры или файлы настроек, возможно, она предполагает, что начинает с нуля.
Обратите внимание: отредактируйте вопрос, указав, как вы запустили Arduino IDE, где в вашей системе установлена IDE, какая у вас операционная система и какой у вас компьютер.
Я обнаружил, что это распространенная проблема на моих компьютерах для разработки, однако использование Visual Micro для Visual Studio значительно сокращает это время.
В основном я использую его для других функций Visual Studio, таких как Intellisense, рефакторинг и управление решениями. В Visual Micro есть несколько собственных привлекательных функций, таких как средства отладки, однако я ими не пользовался.
- Visual Micro
- Visual Studio Community Edition
Я лично не пробовал, но ожидаю, что вы сможете избежать перестроения, используя параметры проекта/решения в Visual Studio. Я обнаружил, что время компиляции в большинстве случаев в этой среде достаточно быстрое, поэтому это не имеет значения. .
Любая причина для понижения? - Visual Micro последовательно компилируется быстрее, чем Arduino IDE. Даже простые программы компилируются в Arduino IDE в лучшие времена по сравнению с использованием других инструментов., @Éliette
Установка параметра «Высокоскоростные параллельные сборки» в параметрах vMirco действительно ускорила сборку для меня. Я использую VS Studio Communiti Edition с Visual Micro., @thowa
Если вы обнаружите, что компиляция медленная, то да, это, вероятно, перекомпилирует то, что на самом деле не нужно перекомпилировать. Это всегда было серьезным недостатком среды Arduino и одним из основных стимулов для полной перезаписи всей системы компиляции в моей IDE UECIDE.
Это включает в себя очень агрессивное кэширование скомпилированных файлов библиотеки и ядра как правильных файлов «.a», которые хранятся отдельно от выбранной вами платы и хранятся до тех пор, пока что-то действительно не потребует компиляции. Таким образом, когда вы впервые компилируете что-то для платы, это может занять 30 секунд, 50 секунд, сколько угодно. Все последующие компиляции для той же платы, даже для разных скетчей (без учета времени компиляции "свежих" библиотек) будут около 2 секунд, а то и меньше.
Это кэширование особенно важно, когда вы работаете в очень медленной системе, такой как Raspberry Pi, когда компиляция может занять много минут без кэшей, но всего несколько секунд для всех последующих компиляций.
Планируете ли вы поддерживать FreeBSD? - UECIDE выглядит многообещающе. На данный момент мне нужно запустить медленную виртуальную машину с окнами. Хотелось бы что-то быстрое, как эта IDE., @user400344
Сама IDE — это просто Java-приложение. Таким образом, он должен нормально работать на FreeBSD. У меня это происходило там однажды - даже сделал для него порт (то есть в первые дни). Он по-прежнему должен работать нормально, хотя может потребоваться небольшой изгиб. Используйте ZIP-версию для Linux и отредактируйте файл сценария uecide соответствующим образом. Однако самое сложное — заставить плагины работать. Им нужны родные двоичные файлы, такие как компиляторы, программисты и т. д. Если вы можете найти такие вещи для FreeBSD, вы можете добиться некоторого успеха в том, чтобы заставить ее работать, а если нет, то нет., @Majenko
Вы можете попробовать использовать систему эмуляции двоичных файлов FreeBSD Linux вместо виртуальной машины Windows, чтобы запустить версию UECIDE для Linux вместе с двоичными файлами Linux. Однако не уверен, что система плагинов сделает из этого., @Majenko
Звучит так же болезненно, как и ожидалось: / Вместо этого я возьму UECIDE для своей виртуальной машины;), @user400344
Эта тема, Arduino IDE и ESET: медленная компиляция, может быть полезна, если вы используете ESET ( по крайней мере один пользователь сообщил, что это помогло), но мне это не помогло, так как я использую Comodo (и может быть есть какие-то другие причины).
Вот еще одна тема, SLOW ARDUINO IDE, посвященная решению, которое помогло многим пользователям с 2009 года (последняя комментарий на форуме датирован 2014 годом).
Также здесь есть несколько полезных сообщений, Невероятно медленная компиляция простых скетчей. Хорошо, я не тестировал все решения сам, но позвольте мне собрать здесь полезные ссылки, чтобы другие ребята могли их найти, и я тоже их проверю.
Привет Яков и добро пожаловать в SE Arduino. Спасибо за предоставленные ссылки, я уверен, что они полезны. Однако гораздо лучше, если вы сможете предоставить ответы, которые вы проверили сами и которые сработали для _вас_. Если вы получили решение, которое сработало для вас, из темы, подобной той, которую вы опубликовали, тогда все хорошо. Однако постарайтесь воздержаться от простого поиска ссылок в Google и публикации их в качестве ответов, не попробовав их сначала... :-), @Greenonline
Привет @Greenonline, честно говоря, я сообщу о своих результатах, как только проверю эти предложения. Просто проблема не кажется простой, и многие пользователи страдают от нее по разным причинам, поэтому я думаю, что некоторые решения, удачные для других, не менее полезны, чем то, что поможет мне. Что касается проблемы, я должен проверить несколько вещей, в том числе - IDE каждый раз перекомпилирует все это? (это упоминается в некоторых темах, но я понятия не имею, как это проверить) - что-то потребляющее процессор? (в диспетчере задач ничего не видно) - что я могу настроить в Comodo? (БЕДРА.. похоже, все разрешено для ), @YakovL
Хорошо, есть простой способ понять, вызывает ли проблема ваш брандмауэр (HIPS или другая технология): просто отключите его и попробуйте снова скомпилировать. В моем случае это не ускорило компиляцию. Интересно, иногда даже наоборот: без брандмауэра компиляция вроде бы всегда ~45 сек, а с включенным фаерволом иногда занимает 17 сек., @YakovL
У меня была такая же проблема до сегодняшнего дня. Как и многие ответы в Интернете, проблема, похоже, связана с антивирусом. Моя установка — Windows 10 x64 с SSD, и я использую Защитник Windows в качестве антивируса.
Я попытался исключить основную папку arduino в "c:\program files (x86)\arduino", но это не улучшило время компиляции.
Я проверил опцию «verbose» в Arduino IDE и увидел, что компилятор вызывается из папки AppData. Поэтому я добавил эту папку в свой список исключений AV, и это сработало!
Время компиляции сокращается в десять раз.
TLDR; В Windows 10 добавьте папку %USERPROFILE%\AppData\Local\Arduino15 в список исключений антивируса.
В частности, посмотрите, установлен ли у вас Trusteer Rapport. Это своего рода механизм банковской защиты, но я обнаружил, что он ужасно замедляет мою компиляцию. Удалил и стало намного шустрее. Я жил с этим оооочень долго, так что рад, что нашел причину., @Mat
- Как компилировать, загружать и контролировать через командную строку Linux?
- Предупреждение при проверке скетча с кодом VS
- Экран LCD 16*02 I2C показывает только первый напечатанный символ
- Будет ли .ino-скетч ардуино компилироваться непосредственно на GCC-AVR?
- Есть ли способ загрузить предварительно скомпилированный код в Arduino?
- Как загрузить уже скомпилированный код, когда никаких изменений не производилось?
- Установка timer3 в режиме CTC - конфликт с сервобиблиотекой
- «dynamic_cast» не допускается с -fno-rtti
Пробовали ли вы включить подробную компиляцию, чтобы точно видеть, что происходит?, @Ignacio Vazquez-Abrams
@Ignacio: обновил вопрос, @Joris Groosman
Попробуйте использовать версию 1.5. Версия 1.6 только что вышла, поэтому в ней могут быть ошибки., @Gerben
@Gerben: до того, как я обновился (сегодня), я использовал 1.0.6, и он действовал так же. Спасибо за ваш комментарий., @Joris Groosman
Запустите проверку диска, а также запустите spin rite на вашем диске. Возможно, ваш вращающийся диск выходит из строя., @benathon
@portforwardpodcast: Меня бы это удивило. Любое другое программное обеспечение, которое я использую, работает без сбоев. Просто кажется, что вся эта ненужная перекомпиляция, @Joris Groosman
Попробуйте временно переместить все свои сторонние библиотеки и любые другие библиотеки, которые вы можете определить как специальные, в папку с другим именем. Попробуйте перекомпилировать Blink, для которого потребуются только стандартные Arduino, и посмотрите, изменится ли время его компиляции. Затем вы можете перемещать их назад по несколько раз, пока время компиляции снова не подскочит - последняя добавленная группа содержит что-то странное. На сборку мира у меня уходит, конечно, больше времени, чем на компиляцию и компоновку одного скетча, но 30 секунд — это безумие! Кстати, какая у вас машина для разработки?, @JRobert