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

 
 
 
Reply to this topicStart new topic
> сравнение размера скомпиллированного кода ARM компилятора, ...в зависимости от структуры файлов программы
PrSt
сообщение Aug 27 2012, 09:28
Сообщение #1


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Помнится когда-то тут, в этом разделе кажется, было интересное обсуждение, где один из уважаемых (в то время) пользователей приводил интересную статью(помоему даже его собственную) - сравнение размера скомпиллированного кода ARM компилятора в зависимости от структуры файлов программы.
Суть в топике передавался следуюший, есть арм компилятора, один, и есть по разному устроенная тестовая программа, которая делает одно и тоже в разных ее исполнениях. В одном варианте все сделано в одном .c файле, потом разбито на разные .c, потом на .c+.h, потом все это разбросано и для объектов какието параметры менялись... и сравнивался результирующий hex(или чтото еще на выходе). Помнится что самый большой выигрыш был когда все написано в одном файле, но при этом правда код привратился в той еще длины "полотенце"...
Я сейчас не могу найти эту интересную статью, ребята, помогите плиз ее найти. Надеюсь на сторожил раздела форума, вы точно должны помнить, это было длинное интересное обсуждение, гдето в 2008-2010гг.


--------------------
Go to the top of the page
 
+Quote Post
scifi
сообщение Aug 27 2012, 09:32
Сообщение #2


Гуру
******

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



Цитата(PrSt @ Aug 27 2012, 13:28) *
Помнится что самый большой выигрыш был когда все написано в одном файле, но при этом правда код привратился в той еще длины "полотенце"...

ИМХО, не актуально, так как современные компиляторы имеют режим multifile compilation.
Go to the top of the page
 
+Quote Post
PrSt
сообщение Aug 27 2012, 09:34
Сообщение #3


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Цитата(scifi @ Aug 27 2012, 12:32) *
ИМХО, не актуально, так как современные компиляторы имеют режим multifile compilation.

не, тут мне важно не актуальность, а сама статья, там обсуждалась природа этого явления, вот это то что щас нужно мне


--------------------
Go to the top of the page
 
+Quote Post
ReAl
сообщение Aug 28 2012, 07:38
Сообщение #4


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Странно, в 2008 у, например, GCC, ключики combine (все файлы из командной строки компилировать как один файл) и whole-program (и это вся программа, больше ничего нет) ещё существовали (сейчас пропали в пользу LTO). И не надо было бы в портянку соединять.

MS студия, кажется, в режиме финальной компиляции тот же эффект использует, все файлы проекта

Возможно, стоит ещё раз поискать (гуглом) по форуму с применением названий указанных выше ключей, что-то ещё на эту тему найдется.

Природа проста — когда компилятор знает, что это у него всё, что вообще есть, то он при необходимости встраивает по месту те функции, которые иначе находились бы в другом файле, что-то вообще выбрасывает и т.д.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 28 2012, 07:48
Сообщение #5


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Если в те времена, когда в ходу ARM7TDMI были, то там еще при вызовах stub'ы очень быстро накапливались, а компиляция одним файлом позволяла их минимизировать.
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 28 2012, 12:26
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(ReAl @ Aug 28 2012, 11:38) *
Странно, в 2008 у, например, GCC, ключики combine (все файлы из командной строки компилировать как один файл) и whole-program (и это вся программа, больше ничего нет) ещё существовали (сейчас пропали в пользу LTO). И не надо было бы в портянку соединять.


А откуда эта информация? -fwhole-program жив и здоров в 4.7.1, как раз собрал его на днях, занимаюсь оптимизацией под NEON, а combine по умолчанию всегда (Compiling multiple files at once to a single output file mode allows the compiler to use information gained from all of the files when compiling each of them).

А вот вопрос слегка мимо темы - может быть знаете, при сборке gcc в чем разница между CLooG на базе PPL и ISL? опция у configure --enable-cloog-backend=xxxxx, это только на производительность влияет, или на оптимизацию тоже?
Go to the top of the page
 
+Quote Post
PrSt
сообщение Aug 28 2012, 13:05
Сообщение #7


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Цитата(_Pasha @ Aug 28 2012, 10:48) *
Если в те времена, когда в ходу ARM7TDMI были, то там еще при вызовах stub'ы очень быстро накапливались, а компиляция одним файлом позволяла их минимизировать.

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


--------------------
Go to the top of the page
 
+Quote Post
ReAl
сообщение Aug 28 2012, 14:02
Сообщение #8


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(SM @ Aug 28 2012, 15:26) *
А откуда эта информация? -fwhole-program жив и здоров в 4.7.1
Ну может я с спутал с прямым углом. Вроде где-то проскакивало, что в связи с введением LTO что-то убрали (или это был --relax ?).

Тоже немного мимо темы -- а на avr-gcc 4.7.1 / Ubuntu64 (32) шансы есть?
Всёж набитой рукой это легче.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 28 2012, 14:16
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(ReAl @ Aug 28 2012, 18:02) *
Тоже немного мимо темы -- а на avr-gcc 4.7.1 / Ubuntu64 (32) шансы есть?
Всёж набитой рукой это легче.

Да шансы то есть, но тут возникает вопрос - во первых "/Ubuntu" у меня нет и не предвидится, я под центос-ом собираю все, но это все фигня. А во вторых - я не знаю особенностей glibc для авр. Сам же я собираю glibc 2.16 с gnu, но я не уверен, что для авр используется тот же монстр. И вообще не знаю особенностей сборки gcc/glibc для мелко-мелкоконтроллеров. У меня то таки Cortex-A.
с этим, короче, велкам в icq
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th July 2025 - 05:10
Рейтинг@Mail.ru


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