Python против C++

Тема в разделе "WASM.LANGS", создана пользователем Intro, 30 мар 2025.

Метки:
  1. Intro

    Intro Well-Known Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    1.668
    Сделал, и... ФПС стал больше, ровно 200 кадров. Но прежний вариант выдавал 180, не сильно быстро, правда я использовал скалярные SSE, если использовать параллельные, то может это и ускорит код ещё больше. В прочим и так получилось в десять раз быстрей оригинала, у автора ноут(Ryzen 7 5800H) не сильно быстрей ряженки 3600Х, если не медленней в однопотоке. Хотя если переписать на тот же С++, может компилятор довольно тривиальный код лучше оптимизирует. Кстати, такая оптимизация ещё хороша для JS, для браузерных демок.
     
  2. Intro

    Intro Well-Known Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    1.668
    Попробовал сделать параллельные SSE операции, и получил те же 200 ФПС, это у меня версия 1.05. Откатил до 1.04, где я использовал просто скалярные SSE т.к. на них считать намного проще чем на FPU, немного оптимизировал код, и ФПС 210, вероятно компилятор сможет ещё больше в оптимизацию. Вывод, далеко не всегда целесообразно использовать параллельные SSE. Код получился довольно простым, значит компилятор С++ сможет очень хорошо оптимизировать, при этом нет нужды использовать интринстики SSE, так что рулит прежде всего оптимизация, при этом компилятор додумался использовать предвычисление функции mandelbrot, но не додумался убрать крайне тормозные косинусы из цикла, по факту около 90% времени занимают выполнения этих косинусов.
    Ещё можно попробовать помучить демку для браузера, JS вроде как быстрей питухона.
    ЗЫ
    Мой 666-й пост.:ireful2:
     
    Research нравится это.
  3. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.925
    Intro, если хочешь, я могу обнулить/изменить счетчик твоих постов :friends:Ну, как доволен? С 1666 постом тебя ;)
     
    Research, Ahimov, alex_dz и ещё 1-му нравится это.
  4. Intro

    Intro Well-Known Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    1.668
    Mikl___, вообще счётчик сообщений это же private, счётчик чётко привязан к кол. сообщений(не знаю изменяется ли, если сообщения удаляются). В общем, перефразируя, где мои ещё 1000 постов, если у меня только 666? Не зря же в ООП ограничители доступ к членам класса, чтобы программисты излишне не злоупотребляли свойствами системы, т.к. это может вызвать неопределённое поведение, и прочие ошибки и сбои.
     
  5. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    570
    самое смешное ограничение

    #define private public

    :))))
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.925
    Ну, как хотите. Теперь все сообщения идут, как бы в счет погашения кредита (нужно читать всё, что написано мелким шрифтом :) )
    P.S. 1666 выбрано не просто так, во-первых, это год, когда выгорел Лондон, во-вторых, это год, когда в Лондоне свирепствовала чума (A plague o' both your houses! -- Чуму на оба ваших дома, на то, что осталось после пожара, как метко предвидел Шекспир за 70 лет до этого)
     
  7. Intro

    Intro Well-Known Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    1.668
    Подумав почему версия 1.05 не быстрей 1.04, решил что есть задержки. Потом вспомнил что в SSE2 есть инструкции pslldq и psrldq, это сдвиги влево и вправо по байтно. Можно сдвигами упаковать младшие байты в структуру sColor без лишнего копирование в память и регистры, и сразу из xmm0 скопировать цвет в буфер.
    Код (ASM):
    1. sColor struct ;(sizeof=4, align=4)
    2.     r                   byte ?
    3.     g                   byte ?
    4.     b                   byte ?
    5.     a                   byte ?
    6. sColor ends
    И получилось! ФПС получился, наберите воздуха в грудь... 415-417 !!!, временами устанавливается на 425. В два раза быстрей чем скалярные SSE.
    Надо конечно весь код скинуть, но для этого надо подготовить архивы с версиями, контролем версий не пользовался. Но это чуть позже...
     
    alex_dz и Mikl___ нравится это.