Достала студия

Discussion in 'LANGS.C' started by freeq, May 9, 2010.

  1. expert

    expert New Member

    Blog Posts:
    0
    /GL (Whole Program Optimization), отключается в опциях..
     
  2. qqwe

    qqwe New Member

    Blog Posts:
    0
    green
    а совсем последние еще и напихают в код много чего своего.

    expert
    и линктайм компиляция/оптимизация. - особый эффект для кода не замечен пока. больше тормозит при компиляции, но разницы в генерируемом коде не замечал пока.
     
  3. green

    green New Member

    Blog Posts:
    0
    expert
    IPO-оптимизации применятся и при отключенном LTCG, для статических (internal linkage) ф-ций.
     
  4. green

    green New Member

    Blog Posts:
    0
    qqwe
    Что конкретно вы имеете в виду?
     
  5. qqwe

    qqwe New Member

    Blog Posts:
    0
    green
    конкретно я? хм.. а вы не замечали? у меня щас нет компилята для примера. появится и не пропадет интерес - могу показать.

    впрочем, простой пример - скомпильте проект с оптимизацией cl 2003 и 2008. сравните результат.
     
  6. green

    green New Member

    Blog Posts:
    0
    qqwe
    Я 2003 пропустил, из 6-й сразу на 2005-ю (8-ю) перешёл. Качество кода существенно улучшилось.

    Пока что не рассматривал детально код, который делает VC++ 2010, но бинарники моего последнего проекта при переходе из 2008 на 2010 потеряли в размере около 4-5%.
     
  7. qqwe

    qqwe New Member

    Blog Posts:
    0
    6тя есть. неплохой компилер, но иногда падал не вовремя. счас не установлен, потому вычеркиваем. 2005 не имею.
    есть 2003 и 2008. обе установлены и можно сравнивать результаты. -O1 у 2003 легче 2008. иногда серьезно. ессно, не хэловорды (в смысле кода много).

    2010 тоже есть. чтото подозрительно легкая. даже ультимат. не ставлю чтоб не сбить настроек того, что есть. выделить комп под нее пока не выходит. впрочем, 4-5% это мало все равно. 2003 плотнее компилит (например, инферно ему у меня собиралось в ~700кб).
     
  8. green

    green New Member

    Blog Posts:
    0
    qqwe
    Интересно... попробую поэкспериментировать.
    Если есть возможность выложить кусок кода, на котором хорошо проявляется эффект, буду признателен.
     
  9. qqwe

    qqwe New Member

    Blog Posts:
    0
    я ж сказал. инферно ему. но там нельзя оптимизировать несколько файлов. точнее заголовок омитить, тк он используется для самоотладки. пример почему в теме на пред странице. 2-3 файла. захотите мучить именно это, могу посмотреть какие

    и, да, студии ультиматные. не знаю как что школьные сделают.
     
  10. karabas_barabas

    karabas_barabas Member

    Blog Posts:
    0
    to freeq
    если влом разбираться в настройках проекта - (хотя там все не так сложно) то нечего винить компилятор и visual studio
    ну или на края используй для своих асм-хаков
    Code (Text):
    1. __declspec(naked) int Hackfunction(DWORD param1, DWORD param2)
    2. {
    3.     __asm{ }
    4. }
     
  11. Z3N

    Z3N New Member

    Blog Posts:
    0
    С 2010 бывает довольно весело, она как-то без объяснений вырезала один иф. Хорошо, что я тогда интересовался асм листингом и заметил, что она опускает его. В противном случает я бы долго думал почему не работает код.

    Ну, да, я так оформил иф, что компилер не понял, хотя с моей точки зрения было всё нормально (в асме провернул бы за пару строчек), а студия не поняла юмора.

    Признаю, был неправ, но она могла хотя бы варнинг состряпать???
     
  12. freeq

    freeq New Member

    Blog Posts:
    0
    karabas_barabas
    вы вобще топ читали?

    ---
    решил проблему следующим образом, заметил что можно указать в настройках проекта, что можно оптимизировать только те функции которые inline, соответсвенно те которые она трогает, делать __stdcall.
     
  13. freeq

    freeq New Member

    Blog Posts:
    0
    ссори за бред выше что я написал, кстати ничего не помагает, раз от раза как повезет, может перекомпилить опять с другим кодом.
     
  14. izl3sa

    izl3sa New Member

    Blog Posts:
    0
    2freeq
    в задаче не пойдет делать убираемый объект глобальным? В этом случае естественно он не будет вырезан оптимизатором ).
    Но в любом случае, скорее всего прав оптимизатор и ваш трюк - грязный )
    Да. ИМХО конечно ))
     
  15. Phuntik

    Phuntik New Member

    Blog Posts:
    0
    freeq
    Это вот этот код не мёртвый:
    Code (Text):
    1. int MyMain()
    2. {
    3.     TEST Test;
    4.  
    5.     Test.dwTemp_1 = 1;
    6.     Test.dwTemp_2 = 2;
    7.     Test.dwTemp_3 = 3;
    8.  
    9.     return 0;
    10. }
    ?
    И где же используется Test ? Что-то из вашего MyMain этого не видно.
    Повторяю, не первый год студию используете, а простых вещей не знаете. Ещё и упорствуете в своём невежестве.
     
  16. freeq

    freeq New Member

    Blog Posts:
    0
    нет, это я кинул просто для "понятия" проблемы, сейчас студия не вырезает а например, идет первый
    Code (Text):
    1. if ( ... )
    2. {//после него второй
    3.    if ( ... )
    4.   {
    5.     //далее код
    6.   }
    7. }
    дык вот, сейчас она засовывает весь код который под вторым if, во второй if, т.е. вобще нарушает логику.
     
  17. cppasm

    cppasm New Member

    Blog Posts:
    0
    Хватит уже писать чепуху.
    Или примеры конкртеные приводи.
    У всех всё работает как и должно, а у тебя "нарушает логику"...
     
  18. osox

    osox New Member

    Blog Posts:
    0
    если у Вас первый if например такой if(CONST_1)
    то зачем генерировать в коде лишнее условие проверку с константой а если переменная которая становится известной при выборе опции в меню к примеру то она должна оставить оба условия в которых есть такие выражения которые вычисляются при определенном событии в системе :)
     
  19. freeq

    freeq New Member

    Blog Posts:
    0
    если выполнился первый if, а второй нет, то там идет break, просто забыл поставить, проблему это все равно не решает :)
     
  20. n0name

    n0name New Member

    Blog Posts:
    0
    ну пример в студию, голословные утверждения не катят.