Сборный / Говнокод #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 будет варнинг, при попытке инлайна функции...
      Ответить

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

Помни, guest, за тобой могут следить!

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


    8