crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Тема закрытаНачать новую тему
> Оптимизирующий компилятор
Litkevich Yuriy
  опции профиля:
сообщение 27.2.2008, 22:46
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Есть ли бесплатный как GCC, но более эфективный компиллер?
И вообще подобный GCC проект, т.е. бесплатный и поддерживающий множество платформ.

Под эффективностью подразумевается следующее:
  • Более высокая скорость компиляции;
  • Более высокая компактность исполняемого файла
    • Выкидывание (линкером по сути) неиспользуемых кусков кода;
    • В отличие от GCC не засовывание всяких штучек для отладки в код;

По поводу последнего пункта читал, приемущественно для линуксовых платформ, что даже в релиз режиме компиляции, чего-то в код засовывается, может и в виндовозе так.
Например, проект Slax какой-то утилой облегчают бинари, при этом ран-тайм дебагеры типа GDB не в состоянии работать, как я понял, ну и разный, любящий по ковырятся, народ тоже так делает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrew Selivanov
  опции профиля:
сообщение 28.2.2008, 10:49
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 249
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 3

Спасибо сказали: 15 раз(а)




Репутация:   6  


Цитата(Litkevich Yuriy @ 27.2.2008, 22:46) *
Есть ли бесплатный как GCC, но более эфективный компиллер?
И вообще подобный GCC проект, т.е. бесплатный и поддерживающий множество платформ.

Под эффективностью подразумевается следующее:
  • Более высокая скорость компиляции;
  • Более высокая компактность исполняемого файла
    • Выкидывание (линкером по сути) неиспользуемых кусков кода;
    • В отличие от GCC не засовывание всяких штучек для отладки в код;

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

нет
нет
по поводу компактности попробуй strip по поводу оптимизации попробуй свичи -mtune=core2 (pentium3, pentium4) -fprofile-arcs -march -mcpu, -fprofile-generate & -fprofile-use и вообще советую почитать по ключам, особенно в старших версиях GCC (4.x.x) и по ключам PGO (Profile Guided Optimization)

PS: А собственно чем тебя так напрягает вес бинарника? Если ты активно используешь шаблоны, конечно он будет большим... я так мыслю хрен с ним с весом, если бы он весил 100Mb вместо одного и работал хотя бы в 10 раз быстрее я был бы просто очень жутко страшно рад :)

Сообщение отредактировал Andrew Selivanov - 28.2.2008, 10:53
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.2.2008, 11:57
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Andrew Selivanov @ 28.2.2008, 13:49) *
А собственно чем тебя так напрягает вес бинарника?

Мне хочется пользоватся одним инструментом для разных целей, для x86, для AVR, для ARM.
Последний еще не пробывал, но уже работа на подходе, а GNU'тый компиллер весьма не эфективный код дает для AVR (WinAVR на www.sf.net)
Если сравнить с комерческим IAR'ом то примерно в 2 раза больше, а в таких системах как AVR память от 2к до 128к (если брать популярные)
ключ -mtune для AVR неподдерживается, а компилю всегда с ключем -O2 (и сравнеине привел для этого ключа).
с GCC4x еще не пробвал.
Дело в том, что сформировался опрделенный подход при написании программ на С для микроконтроллеров, не только у меня, создавать наборы файлов, что-то вроде библиотек, например функции для работы с контрольными суммами удобно держать в одном файле, те которые не используешь (не вызываешь), комерческие компиляторыне компилят. А когда перешел на GNU'тый, обнаружил, что он все собирает.


А что такое strip?

Сообщение отредактировал Litkevich Yuriy - 28.2.2008, 11:57
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrew Selivanov
  опции профиля:
сообщение 28.2.2008, 12:25
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 249
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 3

Спасибо сказали: 15 раз(а)




Репутация:   6  


Цитата(Litkevich Yuriy @ 28.2.2008, 11:57) *
Цитата(Andrew Selivanov @ 28.2.2008, 13:49) *
А собственно чем тебя так напрягает вес бинарника?

Мне хочется пользоватся одним инструментом для разных целей, для x86, для AVR, для ARM.
Последний еще не пробывал, но уже работа на подходе, а GNU'тый компиллер весьма не эфективный код дает для AVR (WinAVR на www.sf.net)
Если сравнить с комерческим IAR'ом то примерно в 2 раза больше, а в таких системах как AVR память от 2к до 128к (если брать популярные)
ключ -mtune для AVR неподдерживается, а компилю всегда с ключем -O2 (и сравнеине привел для этого ключа).
с GCC4x еще не пробвал.
Дело в том, что сформировался опрделенный подход при написании программ на С для микроконтроллеров, не только у меня, создавать наборы файлов, что-то вроде библиотек, например функции для работы с контрольными суммами удобно держать в одном файле, те которые не используешь (не вызываешь), комерческие компиляторыне компилят. А когда перешел на GNU'тый, обнаружил, что он все собирает.


А что такое strip?


%GCC_HOME%/bin/strip - утилита, которая удаляет symbol information из бинарника (или опция -s)

Про AVR не могу ничего сказать, я когда то сразу на ассемблере Microchip делал (PIC16F628, 2k под программу), и вообщем то даже так места не хватало...

По поводу как сделать маленький бинарник почитай этот (весьма интересный) тред: http://en.mikrocontroller.net/topic/74054

Сообщение отредактировал Andrew Selivanov - 28.2.2008, 12:27
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 29.2.2008, 11:34
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Про отладочную информацию: добавь ключик -s и её не будет. :-)
Про выкидывание неиспользуемых функций - этим занимается линкер, можно ему немного помочь ключиками -ffunction-sections -fdata-sections и -Wl,--gc-sections.

Ну и аналога gcc по платформам ты не найдёшь, насколько я в курсе. :-)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Тема закрытаНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 29.3.2024, 15:06