Сборный / Говнокод #3194 Ссылка на оригинал

0

  1. 1
  2. 2
fstp qword [tmp]
fild qword [tmp]

суровое округление через память

Запостил: 3.14159265 3.14159265, (Updated )

Комментарии (26) RSS

  • Это фигня, высер дельфийского компилера круче.
    e2 := round(e1);
    fld tbyte ptr e1
    call @ROUND
    mov [ebp-$18], eax
    mov [ebp-$14], edx
    fild qword ptr [ebp-$18]
    fstp tbyte ptr e2
    wait

    Это, блять, при включённой оптимизации.
    Впрочем, я об этом говорил в своём говнокоде. И никакой демагог не докажет мне, что дельфа адекватна с вещественными числами.
    Ответить
  • мой говнокод - это творчество MS VC++
    вообще я давно понял, что в критичных к скорости местах лучше написать руками асм-код - до 10 раз быстрее получается, чем у всяких "оптимизированых" компилеров ))
    Ответить
    • >MS VC++
      Это древний компилер, поэтому оптимизирует плохо, да и MS не самые оптимизирующие компиляторы пишет.
      Ответить
      • набор команд FPU еще древнее, времен i486
        судя по посту TarasB, да и вообще по некоторым говнокодам Botland пишет компилеры еще херовей
        Ответить
        • >набор команд FPU еще древнее, времен i486
          Это же не мешает компиляторам генерить неоптимальный код. Его люди пишут. Искуство оптимизации компиляторов вылизывается годами.
          Ответить
      • >>>оптимизирует плохо
        ну в отличии от того же BotLanda при включении флага /QIfist
        он генит адекватный код без вызовов процедур и таких перебросок через память
        кстати до VC7 он генил еще большее говно
        >>>Это древний компилер
        и c каких это пор он древний?
        Ответить
        • У меня уже есть MS VS 2010 года.
          По оптимизации - посмотри в сторону компилятора Intel.
          Ответить
          • 7 - это номер версии студии в которой он зарелизен
            VC6==VC98
            VC7==VC2003
            VC8==VC2005
            VC9==VC2008
            итд
            Ответить
          • Хз, смотрел как-то какие-то тесты/сравнения, Майкрософтовский уделывал гнушный (mingw).
            Может быть, сравнения были написаны сотрудниками империи зла, не помню
            Ответить
          • смотря что сравнивать.. гнусный компилятор очень плохо дружит со сверткой выражений, и иногда константы (особенно флоат) вычисляет в рантайме... буквально недавно возился с траблой, когда при инициализации статик обжекта константы были неинициализированы, пришлось выносить инициализацию в main...
            Ответить
              • дефайны не засунешь в неймспейсы и члены классов, они так и будут висеть глобально... сейчас все чаще пытаюсь применить практику: задефайнил, использовал, раздефайни... в коде появляется кое какой порядок... хотя есть ситуации когда лучше с дефайном чем без него...
                Ответить
                  • #define DBG_NEW new(_FILE_, _LINE_)
                    #define new DBG_NEW
                    при использовании инлайна _FILE_ и _LINE_ будут указывать на инлайн... а не на строку использования...
                    Ответить
                • > они так и будут висеть глобально
                  > раздефайни

                  А сложно сделать псевдопрефикс? MYNAMESPACE_MYCLASS_CONSTNAME. Вероятность name collision будет стремиться к нулю.
                  Ответить
                  • name collision тут не причем, это из эстетических соображений...
                    Ответить
                    • я бы из эстетических соображений к с++ вообще не притрагивался.
                      Ответить
                        • а я не встречал более уродливых. такого неортогонального алогичного костылеуродца ещё поискать надо.

                          ява и сишарп куда стройнее и эстетичнее.

                          я уж молчу про функциональные языки.
                          Ответить
                          • у нас разное понимание о эстетике, мне не нравится ни ява ни шарп...
                            Ответить
                            • Ну вот что может быть уродливее смеси андерскоров со знаками больше и меньше?
                              Ответить
            • Может у вас старый гнусный компилятор?

              >и иногда константы (особенно флоат) вычисляет в рантайме...
              Интересно чем они руководствовались... Сохранение возможных исключений для результирующей платформы? О_о

              Интересно... Когда в GNU компиляторах появится векторизация... О_о
              Ответить
    • поставь флаг /fp:fast и все будет немного по другому, так как по умолчанию стоит /fp:precission, что вынуждает все операции над флоатами делать через память, чтоб обрезать лишнюю точность...
      при флаге CodeAnalyse будет варнинг, при попытке инлайна функции...
      Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8