Python против C++

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

Метки:
  1. Mikl___

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

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

    Intro Well-Known Member

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

    alex_dz Active Member

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

    #define private public

    :))))
     
  4. Mikl___

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

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

    Intro Well-Known Member

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

    Вложения:

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

    Intro Well-Known Member

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

    Ahimov Active Member

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

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

    зы шутка сарказм
     
    Последнее редактирование: Понедельник в 00:19
  8. Intro

    Intro Well-Known Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    1.679
    У меня VS2010. Какого хрена такая старая? Это для сталкера, чтобы не переделывать проект под новые чёртовы стандарты. Так что такая.
    Кое как смог запустить raylib v3.0.0, более новые версии на 2010 не пошли, куча ошибок линкера. В общем, код автора так же переделал, у него же под новые стандарты. Например, вектор заменил на банальный динамический массив, ибо там большего не задействовано. Странно ФПС отработал, показал около 300000 ФПС !!!, может какие-то функции не правильно работают, но по ощущение ФПС небольшой... Ладно потом разберёмся, может придётся более новую студию устанавливать, хотя не очень хочется с этими новыми стандартами, мне там только перебор коллекций нравиться, хотя можно и на старой студии макрос прикрутить типа foreach, для красоты.
    ЗЫ
    Это я забыл структуру(Test test;) инициализировать, код же старый, инициализация в самой структуре вроде как тоже не работает. Ну да ладно. Показало 12.1 фепесов, компилятор 2010 явно хуже 2022.
    --- Сообщение объединено, Среда в 01:10 ---
    Что интересно, но придурушный кумпилятор не додумался сделать предвычисление mandelbrot, хотя локально много оптимизаций наделал. И ещё в 2010 нету этого функции double log2(double x), пришлось самому городить, да ещё деление на константу использовал, может из-за этого и упал фпс.
     
    Последнее редактирование: Среда в 01:02
  9. Research

    Research Active Member

    Публикаций:
    1
    Регистрация:
    6 янв 2024
    Сообщения:
    215
    Intro, вам пора создать свою иде(не такая плохая идея), с фпс и компиляторами.
     
  10. Intro

    Intro Well-Known Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    1.679
    Скомпилировал правильным образом, Windows (/SUBSYSTEM:WINDOWS), точка входа указал /ENTRY:"mainCRTStartup"
    Без этих параметров линковщик ругался на файл _WinMain@16
    Но всё равно облом, приложение валяться на этом драндулете, вероятно из-за очень слабой интегрированной В/К(Intel GMA X4500), которая понимает только OpenGL 1.1. Но видно в dll'ке включена поддержка более старшей версии. А может из-за чего ещё.
    Так что АССЕМБЛЕР рулит, это вам не питухон, и даже не С++, более полный контроль кода и задействованных библиотек.
    --- Сообщение объединено, Среда в 12:48 ---
    В общем, да. Падает т.к. нет поддержки OpenGL 3.3
    Код (C++):
    1. // Convert image data to OpenGL texture (returns OpenGL valid Id)
    2. unsigned int rlLoadTexture(const void *data, int width, int height, int format, int mipmapCount)
    И на функции glBindTexture АвОст, т.к. эта функция табличная и в таблице 0, загрузчик не загрузил не одной OpenGL функции, при этом никак об этом не сообщил. Наверное у всех есть OpenGL 3.3, раз такая ошибка редко происходит. Ошибка тут, в том, что в таких случаях надо выводить сообщение, что нет поддержки чего либо. Что интересно, но демка эта, не использует функции старше 1.1 версии. Можно попробовать перекомпилировать dll но это надо VS более старшая, да возни много.
     
  11. Intro

    Intro Well-Known Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    1.679
    Дома комп получше, и с опенгл проблем нет. Студия 2010, raylib 3.0 подключил, свойства настроил. В общем, тест по видео запустил, дополнительно включил оптимизации: SSE2, /fp:fast. ФПС получился 18.7, меньше чем у автора, но у меня log2 самодельный, и там оптимизация не очень. Странно что в 2010 в math.h нету log2, если бы был, то код может бы получше получился. Так же получается компилятор никакой предвычисленной таблицей не пользовался, косинусы и другие операции подсчитал SSE2. Получается у меня на асме оригинальный код(алгоритм) получился существенно медленней, это версия 0.01, не знаю может FPU операции настолько медленней, скорей всего, там же точность real10, без возможности отключения, плюс довольно медленный микрокод без современных оптимизаций.
    ЗЫ
    Точно!!! Отключил SSE, и использовал: Точный (/fp:precise), который по дефолту стоит. И получил всего 8.0 ФПС, значит у меня код всё таки БЫСТРЕЙ немного, я же тоже FPU инструкции использовал. Ну и понятно что у питухона джит компилятор использует более лучшие оптимизации. Мне не интересен питухон со своей намбой, пусть этой пушкой в морду нетычит. А вот аналогичный JIT для Lua весьма интересен, для С1.
    ЗЫЫ
    И ещё забыл сказать, я в биосе отключил буст у 3600Х, так что пашет на своей номинальной 3.8 ГГц, без разгона до 4.4 ГГц.
     
    Последнее редактирование: Среда в 22:32
  12. Intro

    Intro Well-Known Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    1.679
    Сделал типа самодельного raylib на асме, назвал libray, типа рабочие название. Что-то мне raylib не очень, надо переделать, и сделать как надо, можно сказать порт, форк, вольный форк.
    У этой библиотеки есть некоторые проблемы, генерируется dll, у которой жёстко зашит тип графической библиотеке при сборки, причём если нет поддержки, программа тупо падает. Я потратил с утра до обеда, чтобы понять что программа упала просто из-за отсутствия поддержки OpenGL 3.3. Так что имеет смысл сделать некое подобие этой библиотеке на асме, причём весь код компилируется в целевой файл, без всяких дополнительных dll'ок. И если функция может обойтись без OpenGL, значит без этого обойдётся. Круто же делать демки и простые игрушки, которые пойдут на всём, и не надо принудительно устанавливать требования к графическим API, без которых можно обойтись.
     
  13. alex_dz

    alex_dz Active Member

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

    Intro Well-Known Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    1.679
    alex_dz, всего 15 лет, это сегодня вечером, время быстро бежит. И в Intel GMA X4500 нет поддержки этого API. Да и идея сделать подобие библиотеки Raylib(упрощенный вольный форк), чисто на GDI и GDI+, именно для 2д игр и демок. Сейчас минимально современный ПК, на который следует ориентироваться, Core 2, Athlon 64 X2 (АМ2), где очень простая интегрированная В/К, хорошо чтобы директХ 9.0 поддерживала, и как минимум OpenGL 1.1 !
    Уже что-то работает, но надо переделать, интегрировать ранее созданную микробиблиотеку graphic_gdi и прочие. Для 3д что-то делать не планируется.
    ЗЫ
    А вообще странно что в х4500 не добавили чего то получше 1.1, хотя бы версию 2.0, но всё же 3.3 слишком новая версия.
    ЗЫЫ
    Версию OpenGL 2.0 поддерживает, но AIDA64 Extreme этого почему-то не определил.
     
    Последнее редактирование: Пятница в 13:15