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

 
 
 
Reply to this topicStart new topic
> вопрос по времени линковки больших проектов
Tannen
сообщение Dec 6 2008, 06:04
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 16-02-08
Пользователь №: 35 104



Вопрос конечно некорректный ! но все же поделитесь своим опытом , кто работает на ARM .
Я работаю с Infineon XC2000 c линкером входящим в систему VX-ToolSet от Tasking - и при линковке больших проектов с объемом памяти более 500 K и количеством переменных более 2 тыс - линкер работает очень медленно до 5 минут ! 07.gif Вопрос кто сталкивался с подобными проблемами на ARM ( как близкие по возможным объемам памяти МК) на больших проектах ?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 6 2008, 07:47
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



А я бы сказал, что это ключевой вопрос.
Просто он обнаруживается слишком поздно, когда слезть с компилятора уже нельзя или ему нет альтернатив к в случае с линуксом или WinCE.

В свое время тестировал большинство имевшихся компилеров для ARM.

Рекордсменом по тормозам оказался компилер от TI для OMAP-ов входящий в комплект Code Composer Studio.
Дальше самым медленным был конечно GCC в различных вариантах.

Самым быстрым был CodeWarrior от Freescale.
Вторым по быстроте был RealView от ARM Ltd, он же Keil RVDK
Остальные типа IAR, CrossWorks, Multi2000, MicroCross и т.д. были посередине.

Разница во времени компиляции с линковкой могла составлять десятки раз.

C таскингом отдельная песня. Я его даже не тестировал для ARM-ов. Под XC166 он линкует так долго, что вообще пропадает желание иметь с ним дело.
Например, пакет для несложного GSM/GPRS модема (примитивная RTOS, без явы, все сервисы по минимуму, бинарный образ около 1 мега) может линковать по 10-15 мин.

К слову, RealView компилирует с нуля весь проект из 1400 файлов за 5 мин. 20 сек. из них линковка в конце непосредственно длится 10 сек. Получается 700 Кб бинарник.






Цитата(Tannen @ Dec 6 2008, 10:34) *
Вопрос конечно некорректный ! но все же поделитесь своим опытом , кто работает на ARM .
Я работаю с Infineon XC2000 c линкером входящим в систему VX-ToolSet от Tasking - и при линковке больших проектов с объемом памяти более 500 K и количеством переменных более 2 тыс - линкер работает очень медленно до 5 минут ! 07.gif Вопрос кто сталкивался с подобными проблемами на ARM ( как близкие по возможным объемам памяти МК) на больших проектах ?
Go to the top of the page
 
+Quote Post
Tannen
сообщение Dec 6 2008, 08:40
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 16-02-08
Пользователь №: 35 104



Спасибо AlexandrY !
Добавлю от себя что - в проекте о котором идет речь - до 500 файйлов и самое смешное - что сборка ( то есть компиляция и линковка выполняется не из среды Eclipso (чур меня - торомоза вообще дикие даже на маленьких проектах. т.к. java ) а с помощью пакетного командного файла - ну так быстрее ... все ничего только линкер 07.gif такой думающий - не смотря на мощную рабочую станцию дает загрузку процесора на все 100 %
Цитата(AlexandrY @ Dec 6 2008, 10:47) *
А я бы сказал, что это ключевой вопрос.
Просто он обнаруживается слишком поздно, когда слезть с компилятора уже нельзя или ему нет альтернатив к в случае с линуксом или WinCE.

В свое время тестировал большинство имевшихся компилеров для ARM.

Рекордсменом по тормозам оказался компилер от TI для OMAP-ов входящий в комплект Code Composer Studio.
Дальше самым медленным был конечно GCC в различных вариантах.

Самым быстрым был CodeWarrior от Freescale.
Вторым по быстроте был RealView от ARM Ltd, он же Keil RVDK
Остальные типа IAR, CrossWorks, Multi2000, MicroCross и т.д. были посередине.

Разница во времени компиляции с линковкой могла составлять десятки раз.

C таскингом отдельная песня. Я его даже не тестировал для ARM-ов. Под XC166 он линкует так долго, что вообще пропадает желание иметь с ним дело.
Например, пакет для несложного GSM/GPRS модема (примитивная RTOS, без явы, все сервисы по минимуму, бинарный образ около 1 мега) может линковать по 10-15 мин.

К слову, RealView компилирует с нуля весь проект из 1400 файлов за 5 мин. 20 сек. из них линковка в конце непосредственно длится 10 сек. Получается 700 Кб бинарник.
Go to the top of the page
 
+Quote Post
Sanek_spb
сообщение Dec 8 2008, 11:43
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 28-02-07
Пользователь №: 25 746



Так, для справки, проект на арме, линкер RVCT линкует образ размером ~50 метров около 5 минут, из 50 метров половина константные данные, было время когда какая-то сборка тоже сьюта линковала тот же проект больше 30 минут. Самописный линкер под вин32 объектники от микрософтовского компилера в объем пол метра линковал секунду.
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Dec 10 2008, 15:30
Сообщение #5


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

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



Может я открою Америку, но можно использовать параллельную компиляцию. У меня сэкономилось порядка 30% времени при использовании четырех нитей. Собираю через make -j4.
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 10 2008, 15:56
Сообщение #6


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(AlexandrY @ Dec 6 2008, 10:47) *
Дальше самым медленным был конечно GCC в различных вариантах.
.
.
.
Остальные типа ..... CrossWorks .....были посередине.


Под GCC Вы имели ввиду LD который входит в состав binutils . от очевидно не сам линкер виноват, CrossWorks - использует тотже LD.
на ум приходит мысль что не от ликера а от библиотек больше зависит - в разных библиотеках разной шняги напихано, которую линкеру нада парсить двигать выкидывать.

опция -j хороша для компиляции независимых файлов, в терминах маке это разные независимые цели. а вот линковка ОДНОГО бинаряя из кучи объектников маке не распаралелит.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Dec 10 2008, 16:53
Сообщение #7


Профессионал
*****

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



Пару лет тому читал одну заметку, где один программист советовал пользоваться давно известным решением - RAM-диском. У него очень большие проекты стали собираться в разы быстрее. Тем более сейчас DRAM дешевы, как никогда.
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 10 2008, 20:29
Сообщение #8


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



я так и делаю
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 10 2008, 21:41
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(klen @ Dec 10 2008, 23:29) *
я так и делаю

Много лет уже так не делаю, ибо многооборотные диски высокой емкости имеющие мегабайты кэша на борту и, естественно, висящие на эффективно использумом UDMA под операционками имеющими нормальное кэширование, давно уже не являются заметным ограничивающим фактором.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 11 2008, 06:16
Сообщение #10


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Кстати, очень верно.

Перфоманс монитор IDLE состояний диска в винде во время компиляции в RVCT показывает цифры близкие к 100%
Т.е. диск вообще почти не используется.


Цитата(zltigo @ Dec 11 2008, 02:11) *
Много лет уже так не делаю, ибо многооборотные диски высокой емкости имеющие мегабайты кэша на борту и, естественно, висящие на эффективно использумом UDMA под операционками имеющими нормальное кэширование, давно уже не являются заметным ограничивающим фактором.
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 11 2008, 10:59
Сообщение #11


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



у меня особый случай.
работаю на ноуте с ноутным винчестером(5400rpm). собираю и отлаживаю большой не ембедерский проект. выделил из озу 1Гб рамдиска на нем и с него собирается и грузится при старте. получил ускорение в 4 раза. с 15минут до 3-4минут сборка, загрузка в тойже пропорции.

вообще не вижу причин не использовать ОЗУ если его моного , к пример все tmp у меня тоже в этот 1Гб адресованы. Вичестер целее будет, тепла меньше выделится, PCI-E меньше загрузка.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 11 2008, 11:46
Сообщение #12


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Чет не понял вашей технологии.

Вы что же перед компиляцией копируете все файлы проекта на RAM диск, а потом их там и редактируете или качаете обратно?

Или объектные файлы только на RAM диск пишете, а потом их обратно перекачиваете?

Так одно такое копирование десятка тысяч файлов мало не покажеться.
А делать такую операцию постоянно вообще кошмар.




Цитата(klen @ Dec 11 2008, 15:29) *
у меня особый случай.
работаю на ноуте с ноутным винчестером(5400rpm). собираю и отлаживаю большой не ембедерский проект. выделил из озу 1Гб рамдиска на нем и с него собирается и грузится при старте. получил ускорение в 4 раза. с 15минут до 3-4минут сборка, загрузка в тойже пропорции.

вообще не вижу причин не использовать ОЗУ если его моного , к пример все tmp у меня тоже в этот 1Гб адресованы. Вичестер целее будет, тепла меньше выделится, PCI-E меньше загрузка.
Go to the top of the page
 
+Quote Post
dch
сообщение Dec 11 2008, 19:45
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



на четверке до шести часов компилилось :-)
Go to the top of the page
 
+Quote Post
vetal
сообщение Dec 11 2008, 20:00
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
Чет не понял вашей технологии.

Вы что же перед компиляцией копируете все файлы проекта на RAM диск, а потом их там и редактируете или качаете обратно?

Или объектные файлы только на RAM диск пишете, а потом их обратно перекачиваете?

Обычный рам диск. Я примерно такой подход на работе использую, правда чуть поменьше выделил.
Cоздается обычный рам диск, назначается файл образа и работаем. При загрузке и выкрузке операционной системы этот диск загружается из образа или сохраняется в него.
Без бесперебойника я бы не рекомендовал так делать(в буке он встроенный smile.gif )
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 11 2008, 22:30
Сообщение #15


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



А, понял, интересная практика для экстремалов.
Питание еще так скажу бледнеет перед тем как валят систему разные USB примочки начиная с флешей и кончая осцилами.
RAM диск самое то чтобы почувствовать суровую правду жизни.

Цитата(vetal @ Dec 12 2008, 00:30) *
Обычный рам диск. Я примерно такой подход на работе использую, правда чуть поменьше выделил.
Cоздается обычный рам диск, назначается файл образа и работаем. При загрузке и выкрузке операционной системы этот диск загружается из образа или сохраняется в него.
Без бесперебойника я бы не рекомендовал так делать(в буке он встроенный smile.gif )
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 23:49
Рейтинг@Mail.ru


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