Python против C++

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

Метки:
  1. Intro

    Intro Well-Known Member

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

    Intro Well-Known Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    1.672
    Попробовал сделать параллельные 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.672
    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.672
    Подумав почему версия 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.
    Надо конечно весь код скинуть, но для этого надо подготовить архивы с версиями, контролем версий не пользовался. Но это чуть позже...
    --- Сообщение объединено, 13 апр 2025 в 21:42 ---
    В общем, вот не версировал толком, точней делал это архивами. Как-то так получилось. Закрывать приложение, первые версии [Alt]+[F4], а с версии 0.035 клавиша [Esc].
    Кстати! Могут агрится аверы, там окошки без заголовка + асм некоторым аверам это не нравится.
     

    Вложения:

    alex_dz и Mikl___ нравится это.
  8. Intro

    Intro Well-Known Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    1.672
    И ещё, в самых первых точней нулевых версиях, не использовал фреймбуфер, рисовал SetPixel, получал всего 3 ФПС. А так, в 0.01 получаю на райзене 3600х 8-9 ФПС. Версия v0.02 соответствует компиляции С++ оригинального кода из видео, у меня 17-25 скачит.
     
  9. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    201
    Mikl___,

    За два десятка лет, тысяч 60 сообщений это норм число. Может счётчик и акк поправить :sarcastic:

    зы шутка сарказм
     
    Последнее редактирование: 14 апр 2025 в 00:19