7Mb C кода чем компилить?

Тема в разделе "WASM.ZEN", создана пользователем S_T_A_S_, 18 апр 2005.

  1. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Есть у мя один большой файл, а в нём всего-то одна функция на 150000 строк.



    GCC 3.3.1 (MinGW) скомпилил примерно за час при отключенной оптимизации, код оставляет желать лучшего :-( С -fexpensive-optimizations -O1 он вот уже 7й час компилит, пока ещё не ясно, что получится... =)



    MSVC (cl /O1gs) после 2.5 часов раздумий выдал:

    Fatal Error C1053 The function is too large to compile.

    Без /Og за тоже время скомпилировать ему удалось, но код ещё хуже, чем после GCC

    Intel C++ отпадает, т.к. код после него ни в какие ворота по размеру не проходит.



    А очень хотелось бы приемлимый MS COFF получить. Да и С++ желательно.

    Про MSVC вычитал /Zm - попробую, как только возможность появится.



    Может кто сталкивался с подобным, что можно ещё попробовать?
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    S_T_A_S_

    Это что за функция такая зверская если не секрет? :) DoWindows? :)
     
  3. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759




    Интересно, есть ли в книге рекордов Гиннеса записи на эту тему... :)
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    S_T_A_S_





    Может заинлайнить? ;)
     
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    S_T_A_S_





    Неужели он хуже GCC ?

    Ты всё-таки попробуй, интересно же все-таки :derisive:
     
  6. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    g++ наконец-то докомпилял. код с -O1 лучше чем без, но явно не дотягивает до оптимального. надо будет пробовать -O3.



    _DEN_ >




    Не зверская, а математическая.



    >




    Что куда заинлайнить? Повторю:






    _BC_ >




    Да мне-то не до шуток, получается целую неделю занимался brainfuck





    Asterix >




    По части размера в данном конкретном случае - ПОЛНЫЙ отстой. Ещё на исходнике в 10 раз меньшем он выдавал 2 метра экзешник, в то время как GCC и MSVC с оптимизацией по размеру - порядка 200 колобайт.

    Попробовать, конечно надо, почитаю ещё про ключики...





    Пока результаты такие:

    MSVC без оптимизации ~5 метров

    GCC без оптимизации ~3 метра

    GCC -O1 ~1.5 метра

    щас опять мучаю MSVC...
     
  7. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    S_T_A_S_



    Ладно, шучу.



    Оптимизация нужна на скорость или на размер?
     
  8. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    на размер
     
  9. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    S_T_A_S_



    Хорошо. Чем upx не устраивает?
     
  10. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    S_T_A_S_

    А сорс этот можно выложить? Я тоже помучать хочу - хороший тест для компиляторов.
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Не пробовал lcc?
     
  12. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    n0name

    Не пробовал lcc?

    S_T_A_S_ > С++ желательно
     
  13. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Такс, теперь ясно, что MSVC 7.1 /Zm как мёртвому припарка.

    Где-то у мя был ещё и 8.0beta может лучше окажется



    Самым шустрым пока оказался Digital Marc C 8.4 - сразу же выдал out of memory =)



    А Borland C++ 5.6 for Win32 выдал 15447 штук warning (на вполне нормальном коде), очень быстро сгенерировал объектник и помер с сообщением:

    Assertion failed: Config, file C:\src\ilink\import.cpp, line 311

    Abnormal program termination



    Intel 8.1 ведёт себя ни чем не лучше:

    compilation aborted (code -1073741819)



    :-((((





    semen >




    нет, мне по башке настучат ;)





    _DEN_ >




    Тем, что это НЕ компилятор
     
  14. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    вопрос не по теме: а ты эту функцию не руками писал? :)(я все же надеюсь, что какая-нить хитрая тулзовина сгенерила код)
     
  15. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    ну я за неделю стока не написАл бы =)



    lcc: (99288) fatal error: Out of memory.
     
  16. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    S_T_A_S_





    lcc тут отдыхает q_q уже об этом написал.

    Может 6-я студия справится? :derisive:
     
  17. johnfound

    johnfound New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2003
    Сообщения:
    74
    Адрес:
    Bulgaria
    Интересно, а если ето машинно генерированной сорс - почему не ассемблер сразу. Ведь ето же просто функция... ФАСМ например скомпилит ети 7Mb на ура до MS COFF.
     
  18. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    S_T_A_S_

    Чистого кода 7Mb или код _обильно_ разбавлен комментариями?
     
  19. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Очередной жертвой пал Vector C (ключи /small /max) - после 4х часов раздумий выдал:

    *** FATAL: INTERNAL ERROR: Stack overflow, at: 0006155D, 00026146, 0006155D, 0006161F, 00061607, 00061607, 0006161F.

    --- In File: myfile.c, at line: 42, column: 0



    Asterix >




    Может и справится, но с С++ кодом у этого компилятора плохо.





    johnfound >




    Про fasm уже думали - это одно из возможных решений, но только для x86. А поскольку речь идёт о новейшей суперпрогрессивной технологии производства bloatware, то хочется видеть это и на других процессорах :)





    q_q >




    Комментариев практически нет. Да дело не в этом - выкинуть whitespace не проблема, и препроцессоры всех компиляторов отлично справляются. Умирают оптимизаторы.





    Видимо, остаётся пробовать разбить эту функцию на некоторое количество маленьких. Хорошо, если удастся все их держать в одном файле...
     
  20. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    S_T_A_S_

    А попробуй WPO c MSVS (/GL кажись) - теперь оптимизатор работать будет на этапе линковки - вдруг не слетит?