тип long long. почему нестандартный?

Тема в разделе "LANGS.C", создана пользователем cupuyc, 25 май 2010.

  1. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    iar, вроде, код лучше чем гсс лепит. это вообще общая проблема у гцц - оч слабый оптимизатор.

    _DEN_
    http://www.iar.com там сверху список платформ. ищите х86.
     
  2. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Ustus, ну, не знаю. у кого-то VC глючит, у кого-то IAR. у меня всё норм. довольно хороший компилятор. отлично оптимизирует, проблем не вызывает. Вот Keil - другое дело. Довольно глюконутое создание. Хотя, и с ним можно работать.
    Чтобы писать на gcc, а потом отлаживать под gdb - это нужно обладать особым мазохизмом.
     
  3. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Ещё одно мега обоснованное заявление.
    Что-то последнее время обострение пошло: то у кого-то студия не так работает, то у gcc оптимизатор плохой...
    Оптимизатор там сравнимый с MSVS и ICC.
    Где лучше есть я не знаю...
     
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.553
    Адрес:
    Russia
    qqwe
    Пруфлинк плиз. И доказательства.
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    имхо msvc-gcc-icc, такой порядок качества оптимизации.
    Хотя в большинстве ситуаций сравнимо.
     
  6. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Это всё спорные вопросы.
    В некоторых ситуациях ICC намного лучше, в некоторых нет.
    Но то что у GCC хороший оптимизатор - это однозначно.
     
  7. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    По поводу качества оптимизации gcc могу поспорить. Что касается сторонних процессорных архитектур, таких как ARM, AVR, то он, действительно, довольно слабо оптимизирует. У IAR качество кода значительно выше - как по размеру, так и по производительности. В гугле можно найти довольно много сравнительных тестов.
     
  8. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Ну давай свой проведём :)
    Под AVR я не писал, под ARM сейчас пишу.
    GCC 4.5.0 оптимизирует если не отлично, то очень хорошо.
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    +1
    gcc благодаря промежуточному коду почти не зависит от платформы компиляции, и для arm/avr генерит очень неплохой код.
    Правда ручками иногда можно чуть лучше написать из-за особенностей платформ, но не всегда.
     
  10. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    давайте устроим профайлинг :). cppasm, нужно взять какой-нибудь хороший проектик, чтобы всё по честному было. В несколько тысяч строк кода. Посмотрю что-нибудь из своих сорцов. Тема, действительно, интересная.
     
  11. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    cupuyc
    Да если б глючил. Эта зараза у меня как-то заклинила на какой-то фигне типа char a; int b; if( a & b )... - точно уже не вспомню. Путем шизофренического изучения кода было выяснено, что оно делает арифметику на смешанных типах не так, как всякие зануды из ISO/IEC, а как хочет его левая пятка. Сей прискорбный факт сильно уронил его в моих глазах. А оптимизирует да, оптимизирует хорошо, зараза, особенно по размеру - руками хрен так сделаешь.

    Насчет gcc - сам поток кода оптимизит хорошо, правда паттерны ловит похуже MS. Только вот некоторые фичи - просто плакать хочется. Ну какого делать memcpy через тормознутое rep movs? Как ни крутил настройки - от этой ереси никак не избавиться :dntknw:
     
  12. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Совсем недавно (пока не добавили поддержку SSE) студия делала то же самое, и никто не жаловался.
    А вообще у тебя скорее всего размер копируемого блока маленький просто.
     
  13. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    cppasm
    TermoSINteZ
    разве есть проблема скомпилить с -O1 (не знаю зачем компилить всю прогу с -O2) и тем и тем? последний раз когда полгода назад компилил и тем и тем бинарь из мингв-гцц на то время последнего был в ~2 раза толще, чем из мсвс2003. и не могу сказать, что это исключение. бинари из гцц с -О1 всегда в 1.5 и больше раза толще, чем из мсвс.

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

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    qqwe
    Ну как зачем?! -O2 врубает ряд существенных оптимизаций. Правда -O2, в некотором смысле, тоже не фонтан, поскольку всё ещё не включаются -funroll-loops и -finline-functions. Я в make.conf, вечно к -O2 добавляю ещё -ftracer и -ftree-vectorize (это помимо -funroll-loops и -finline-functions). -ftree-vectorize я в действии не наблюдал -- как-то руки не дошли, а вот -ftracer реально помогает коду быть лучше: я изучал вопрос, как бы так написать inline функцию с аргументом n и циклом for (i = 0; i < n; i++), причём, чтобы цикл разворачивался. Без -ftracer я не смог добиться такого. Правда было это пару-тройку лет назад, может сейчас ситуация изменилась.
    -O2 ведь, по-сравнению с -O1, делает выход лишь лучше: проводятся оптимизации по скорости, которые не увеличивают размер. Поэтому, по-моему, имеет смысл всегда врубать -O2, отключая его лишь для создания отладочного билда. Скорость компиляции не настолько критична, чтобы отказываться от пачки дополнительных оптимизаций.
    И что это доказывает? Что опция gcc -O1 подразумевает меньшую оптимизацию, чем аналогичная у msvc?
     
  15. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Уже был вопрос про пруфлинк. Я очень хочу его повторить. Мне очень не нравится, читая поверхностные описания непонятно чего, подозревать тебя в том, что твои эксперименты были поставлены криво. И в то же время, мне было бы интересно посмотреть на описание серьёзных проблем оптимизации, которые ещё неизвестна разработчикам gcc, или с которыми они не в состоянии справиться. Мне всегда было интересно, что получается в результате работы gcc. Но, к сожалению, это абстрактное любопытство последнее время не подкрепляется практическим интересом, и поэтому не в состоянии в состоянии сподвигнуть меня на самостоятельные исследования. И я бы благодарен, за содержательные линки на эту тему.
     
  16. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Отличный подход.
    Давай тогда вообще отключим оптимизацию (-O0) и будем писать что оптимизатор плохой.
    Я вообще всё с -O3 собираю, чтоб не добавлять кучу ключей к -O2 как r90 написал.
    И какой смысл сравнивать тёплое с мягким?
    -O1 - оптимизация по скорости, а сравниваешь ты размер.
    Это показатель что-ли?
    Хочешь по размеру оптимизировать - для этого отдельные ключи есть.
     
  17. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Вообще-то -O3 в gcc это рискованный ключ. Возможна не корректная работа и скорость даже может упасть.
     
  18. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    У меня видимо звёзды так не становились, не сталкивался с таким ни разу.
    Ну можно -O2 -finline-functions -funroll-loops если к -O3 резкая антипатия.
    Но сравнивать при этом всё равно надо скорость, а не размер.
     
  19. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Это конечно.

    Видимо именно так.

     
  20. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Я GCC 4.5.0 пользуюсь, вот из его мануала: http://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/Optimize-Options.html
    Никаких таких страшилок не пишут :)