Jump to content

    

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

Версия была еще до паков, кажется.

Скорее всего 4й keil, но на нем уже наверно никто не сидит :)

 

Share this post


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

У меня проекты лежат на внешнем 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
Ха, реально быстрей стало.

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

 

Нужно для навигации по проекту - "Go to definition", "Go to reference".

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this