реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> время компиляции проекта ~8мин., От чего зависит и как уменьшить?
alux
сообщение Mar 29 2009, 08:48
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Проект состоит из двух десятков исходников. Плюс ко всему подключены в виде библиотек проекты scmRTOS и fatFS.
Компилятор IAR C/C++ Compiler for AVR 5.20.3 (5.20.3.50106). Компьютер Pentium 4 2.8ГГц ОЗУ 256 Мб.
Компиляция проекта составляет почти 8 минут! Собственно, меня это уже достало... 90 процентов времени занимает компиляция одного из файлов.
Как убыстрить этот процесс ? Зависит ли от количества ОЗУ компьютера или еще каких-либо факторов?
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Mar 29 2009, 10:34
Сообщение #2


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(alux @ Mar 29 2009, 10:48) *
Проект состоит из двух десятков исходников. Плюс ко всему подключены в виде библиотек проекты scmRTOS и fatFS.
Компилятор IAR C/C++ Compiler for AVR 5.20.3 (5.20.3.50106). Компьютер Pentium 4 2.8ГГц ОЗУ 256 Мб.
Компиляция проекта составляет почти 8 минут! Собственно, меня это уже достало... 90 процентов времени занимает компиляция одного из файлов.
Как убыстрить этот процесс ? Зависит ли от количества ОЗУ компьютера или еще каких-либо факторов?

Если используете make, можно запустить make -j, это параллельная компиляция. Для двухъядерного опитмально -j4.
Опять же, сделайте depends, не будет перекомпиляции исходников, которые не изменялись. Что за файл долго компилируется?
ОЗУ 256 это мало по современным стандартам, неплохо бы минимум 512!
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 29 2009, 12:46
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



У меня тоже долго компилирует, но только первый раз. Повторный rebuild all проходит быстро. Причину не понял.
Go to the top of the page
 
+Quote Post
alux
сообщение Mar 29 2009, 13:07
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



А долго - это сколько? У меня в любом случае (первый и последующие) Rebuild All более 8 минут... sad.gif
Цитата(HARMHARM @ Mar 29 2009, 13:34) *
Что за файл долго компилируется?

Файл tasks.cpp содержит реализации классов и много различных функций.
Go to the top of the page
 
+Quote Post
meister
сообщение Mar 30 2009, 08:22
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Цитата(alux @ Mar 29 2009, 12:48) *
90 процентов времени занимает компиляция одного из файлов.


Сделайте вывод результата препроцесора этого файла и посмотрите на его размер. Чем больше этот файл - тем дольше компилятору его разбирать (как бы очевидно). Еще игры в трехэтажные шаблоны тоже неплохо тормозят компиляцию (за счет увеличения таблицы символов - дольше в ней искать и чаще свопиться).
Go to the top of the page
 
+Quote Post
alux
сообщение Apr 22 2009, 14:36
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Обнаружил, что если убрать Cross Call в опциях компилятора, то время компиляции нормальное (порядка пары десятков секунд). Но после этого программа перестает нормально работать. Проблема начинается при вызове функции menu_init(). Внешне это проявляется выводом "мусора" на ЖКИ и пересбросу МК. Размеры CSTACK, RSTACK увеличил в 10 раз. Не помогает. Программа работает нормально только при максимальной оптимизации по размеру (с включенной опцией Cross Call). Из описания компилятора (IAR 5.20.3) : "Эта опция уменьшает размер RSTACK путем запуска cross-call optimizer N раз". Странно однако, обычно эту опцию многие отключают, чтобы не было проблем. У меня же наоборот получается...
На что следует обратить внимание при выключении этой опции?
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 23 2009, 06:09
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(alux @ Apr 22 2009, 18:36) *
Странно однако, обычно эту опцию многие отключают, чтобы не было проблем.

Я всегда считал, что отключение оптимизации с целью сокрытия глюков - это всё равно, что прятать голову в песок. Если поведение программы зависит от настроек компилятора, значит программа глюкавая. В таком случае отлаживать можно как обычно: ставить точки останова, смотреть содержимое переменных, стека и т.д.
Go to the top of the page
 
+Quote Post
alux
сообщение Apr 23 2009, 06:57
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Цитата(scifi @ Apr 23 2009, 09:09) *
Я всегда считал, что отключение оптимизации с целью сокрытия глюков - это всё равно, что прятать голову в песок.

Я всегда работал с максимальной оптимизацией по размеру. Повторю, что глюк возникает при ОТКЛЮЧЕНИИ оптимизации. В данном случае опции Cross Call, которая влияет только на размер RSTACK.
Go to the top of the page
 
+Quote Post
xelax
сообщение Apr 23 2009, 12:28
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



У меня начинает долго компилировать, когда при запущенном IAR вытаскиваешь и втыкаешь usb dongle c лицензионным ключом. Когда перезапускаешь IAR начинает нормально собирать.
Go to the top of the page
 
+Quote Post
Zlumd
сообщение Sep 30 2009, 08:15
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 327
Регистрация: 12-04-05
Из: Новосибирск
Пользователь №: 4 057



Цитата(alux @ Mar 29 2009, 15:48) *
Проект состоит из двух десятков исходников. Плюс ко всему подключены в виде библиотек проекты scmRTOS и fatFS.
Компилятор IAR C/C++ Compiler for AVR 5.20.3 (5.20.3.50106). Компьютер Pentium 4 2.8ГГц ОЗУ 256 Мб.
Компиляция проекта составляет почти 8 минут! Собственно, меня это уже достало... 90 процентов времени занимает компиляция одного из файлов.
Как убыстрить этот процесс ? Зависит ли от количества ОЗУ компьютера или еще каких-либо факторов?
Похоже это глюк IARa 5.20.
Есть у меня один исходник.
На IAR 5.11B время компиляции при полной оптимизации - 29 секунд.
На IAR 5.20 время компиляции при полной оптимизации - полчаса.
При отсутствии оптимизации обе версии за 5 секунд компилируют.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.04176 секунд с 7
ELECTRONIX ©2004-2016