Jump to content

    
Sign in to follow this  
sandh

Почему KEIL компилирует медленнее IAR в 30 раз?

Recommended Posts

Если диск, где лежат файлы проекта, еще из прошлого столетия, то такой "квантовый" скачок скорости вполне возможен :)

У меня проекты лежат на внешнем SSD (usb 3.0), к тому свежий Keil очень хорошо работает на современных многоядерных процессорах.

В итоге любой проект одинаково быстро компилируется с любыми галочками и без оных.

 

Как раз таки проект лежит на SSD Kingston SUV400S37240G. ОЗУ 16Гб. Процессор i5-6400 2.7Ghz. Win10 x64. С галочкой Browse information компиляция проекта 6:40. Без - 11 секунд. Keil 5.23. Компилятор V5.06

Снятие галочки Debug information ускоряет процесс компиляции только на 1 секунду.

В проекте компилируется 140 файлов. Проект изначально создан генератором STM32Cube. Большое время компиляции занимает стек LwIP

 

Загрузка системы с галочкой Browse information и без

post-1897-1497509590_thumb.png

post-1897-1497509605_thumb.png

Share this post


Link to post
Share on other sites
Как раз таки проект лежит на SSD Kingston SUV400S37240G. ОЗУ 16Гб. Процессор i5-6400 2.7Ghz. Win10 x64. С галочкой Browse information компиляция проекта 6:40. Без - 11 секунд. Keil 5.23. Компилятор V5.06

Снятие галочки Debug information ускоряет процесс компиляции только на 1 секунду.

У меня комп на работе намного скромнее (вин 7), но такого поведения я не заметил :laughing:

Правда проекты у меня не имеют такого числа компилируемых файлой, все "лишнее" и отлаженное выложено в библиотеки (см. ниже).

 

В проекте компилируется 140 файлов. Проект изначально создан генератором STM32Cube. Большое время компиляции занимает стек LwIP

Такую уйму файлов из сторонних библиотек имеет смысл компилировать в lib файлы и подключать к проекту.

В keil есть поддержка дерева проектов (multi-poject workspace), тогда можно просто создать соотв. проекты для формирования lib и подключить их в группу с самим проектом.

Тогда в проекте можно оставить лишь те файлы, которые проходят отладку, а готовые модули можно аналогично "скидывать" в библиотеки (с галочкой Browse information в версии DEBUG и без - RELEASE)

В итоге полная пересборка проекта занимает считанные сек (в любом сочетании галочек) :)

 

зы. Т. е. проекты храните на системном диске, где винда лежит??

Путь к проекту не содержит русские буквы?

Share this post


Link to post
Share on other sites
У меня комп на работе намного скромнее (вин 7), но такого поведения я не заметил :laughing:

Правда проекты у меня не имеют такого числа компилируемых файлой, все "лишнее" и отлаженное выложено в библиотеки (см. ниже).

 

 

Такую уйму файлов из сторонних библиотек имеет смысл компилировать в lib файлы и подключать к проекту.

В keil есть поддержка дерева проектов (multi-poject workspace), тогда можно просто создать соотв. проекты для формирования lib и подключить их в группу с самим проектом.

Тогда в проекте можно оставить лишь те файлы, которые проходят отладку, а готовые модули можно аналогично "скидывать" в библиотеки (с галочкой Browse information в версии DEBUG и без - RELEASE)

В итоге полная пересборка проекта занимает считанные сек (в любом сочетании галочек) :)

 

зы. Т. е. проекты храните на системном диске, где винда лежит??

Путь к проекту не содержит русские буквы?

 

Путь к проекту не содержит русские буквы. А сам проект да, лежит на системном диске. Вторым диском подключен HDD Seagate 1Tb st1000dm010. Туда я настроил резервное копирование 2 раза в сутки. А сильно критично на системном диске с проектами работать? А за информацию про мультипроекты спасибо, буду сейчас настраивать

Share this post


Link to post
Share on other sites
Путь к проекту не содержит русские буквы. А сам проект да, лежит на системном диске. Вторым диском подключен HDD Seagate 1Tb st1000dm010. Туда я настроил резервное копирование 2 раза в сутки.

 

А сильно критично на системном диске с проектами работать?

Если есть резервирование, то не критично :)

 

У меня на системном диске (разумеется SSD!) лежит только винда, установленные программы и свап-файл. На всех компах.

Для хранения проектов у меня используется внешний SSD 250Гб (по USB3.0), на всех моих рабочих компах он определяется под одной и той же буквой (диск Z),

а запуск, отладка и компиляция происходит прямо с диска. Сам диск SSD M2 - крохотный, не больше длинной зажигалки ))

На этом же диске портабл-браузер, портабл-почта, любимая музыка и т.п. .... Прям как вассерман - все свое ношу с собой :)

 

Оказалось очень удобно - не нужно заниматься ононизмом синхронизацией проектов, истории браузера и т. п.

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

 

А за информацию про мультипроекты спасибо, буду сейчас настраивать

Оч. полезный инструмент, есть во всех нормальных IDE, однако, почему-то не все его используют ...

Share this post


Link to post
Share on other sites

В Keil v.5.24.2 установил компилятор V6.7. Проект стал компилироваться за 12 секунд с включенным Browse Information. Чтобы не выдавало предупреждения, поставил в настройках AC5-like Warnings. Единственная проблема была с компиляцией ассемблерных вставок, генерируемых кубом. В установленной папке STM32Cube подправил файл FREERTOS-STM32F7xx_Configs.xml

Заменил строки

<SubComponent Csub="Keil">    <!-- Keil refers to RVDS files -->
            <File Category="source" Name="Source/portable/RVDS/ARM_CM7/r0p1/port.c"/>
            <File Category="header" Name="Source/portable/RVDS/ARM_CM7/r0p1/portmacro.h"/>
        </SubComponent>

 

на

<SubComponent Csub="Keil">    <!-- Keil refers to RVDS files -->
            <File Category="source" Name="Source/portable/GCC/ARM_CM7/r0p1/port.c"/>
            <File Category="header" Name="Source/portable/GCC/ARM_CM7/r0p1/portmacro.h"/>
        </SubComponent>

 

 

image.png

 

Share this post


Link to post
Share on other sites
В Keil v.5.24.2 установил компилятор V6.7.

А я пока отказался от компилятора v6 в пользу "старого" v5, потому что последний все равно дает меньший код, хотя ARM утверждает обратное.

Сначала предположил, что все дело в стандартных подключаемых библиотеках, поэтому выпилил их в ноль. Но не помогло :(

 

Поэтом я лично v6 вижу пользу лишь в действительно крупных масштабных проектах, где разница в объёме кода не так критична, а гораздо важнее "умность" компилятора.

Во всех остальных случаях пока что прекрасно справляется v5.

HAL не использую (нет смысла), вполне хватает прямого обращения к регистрам и конечно же "голого" CMSIS.

Сейчас все проекты компилируются быстро. Сильно влияет то, что готовые отлаженные блоки своевременно собираю в библиотеки, которые подключены итоговому проекту (уже писал об этом).

Отладка производится частями с соотв. тестами.

Share this post


Link to post
Share on other sites
Если еще кому интересно. в Options->Output можно убрать галочку Browse Information. Не создаются файлы .CRF и скорость компиляции раз в 30 увеличивается

 

Ха, реально быстрей стало.

А что мы теряем? Зачем Browse Information?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this