WebAssembly | Когда и как использовать ? | Сравнение скорости с JavaScript | Почему не убил JS?

แชร์
ฝัง
  • เผยแพร่เมื่อ 6 ก.ย. 2024

ความคิดเห็น • 20

  • @artwelf
    @artwelf 5 หลายเดือนก่อน +4

    Немного некорректен тест на перебор массива. Вы в Rust-коде используете строго типизированный массив, а в JS используете Array. У строго типизированных массивов с фиксированной длиной производительность гораздо выше, так как они хранятся в стеке (их размер известен в момент компиляции), а вот для массивы, длина которых не известна в момент компиляции, хранятся в куче. Доступ в стек наша программа имеет напрямую, а вот в кучу она может обращаться только лишь через операционную систему, что добавляет задержку.
    Логичнее было бы либо использовать в Rust-коде вектор, либо в JS тоже использовать строго типизированный массив Int32Array.

  • @hrustalevdev
    @hrustalevdev 7 หลายเดือนก่อน +2

    Спасибо большое! Очень познавательно!

    • @AndreyChuprin0101
      @AndreyChuprin0101  7 หลายเดือนก่อน

      Всегда пожалуйста) Рад, что вам было полезно)

  • @kibinnaneko3989
    @kibinnaneko3989 ปีที่แล้ว +3

    Было очень интересно, спасибо за видео

    • @AndreyChuprin0101
      @AndreyChuprin0101  ปีที่แล้ว

      Очень рад, что вам понравилось )

  • @mqxim630
    @mqxim630 4 หลายเดือนก่อน

    спасибо за такой крутой урок! сделайте пожалуйста урок по работе с канвасом через webassembly (как сейчас работает фигма)! будет очень интересно узнать

  • @eugenekalashnikov9331
    @eugenekalashnikov9331 ปีที่แล้ว +2

    Спасибо, информативно. Webasembly, например, используется в mitek SDK

  • @myaccount2611
    @myaccount2611 3 หลายเดือนก่อน

    Я думаю, что в первом примере компилятор оптимизирует простой цикл до b = arg * 2;

  • @user-lr3yc8eu4r
    @user-lr3yc8eu4r ปีที่แล้ว +1

    Figma на нем работает, если не ошибаюсь. На чистом JS такого не сделать, в принципе. Так что думаю фишка WA далеко не в скорости перебора цикла или операций сложения.Но canvas, вышедший в html5, в принципе закрывает большинство потребностей делая WA не сильно востребованным.

    • @AndreyChuprin0101
      @AndreyChuprin0101  ปีที่แล้ว +3

      Я пытался показать на примере простых операций преимущество в скорости. Но ведь высокая производительность нужна не только при работе с изображениями, + можно WA использовать и для работы с canvas, просто далеко не везде нужна такая оптимизация

  • @ashimov1970
    @ashimov1970 ปีที่แล้ว +2

    Тут выиграл Rust а не WASM. Тот же Blazor (C# + WASM) намного проигрывает в скорости JS фреймворкам.

    • @AndreyChuprin0101
      @AndreyChuprin0101  ปีที่แล้ว

      Боюсь, что вы не правы.
      Объясняю:
      Данное приложение никоим образом не может взаимодействовать с Rust напрямую. Rust лишь компилируется в Wasm, который и работает в браузере, а мы, в свою очередь, лишь используем определённый интерфейс для взаимодействия с Wasm в приложении.
      Выполнение кода Wasm (если он скомпилирован из другого языка) может зависеть лишь от компилятора, а если быть точнее - от того, насколько правильно был скомпилирован код. То есть - возможно проблема в blazor, с ним я непосредственно не знаком.
      А почему именно фреймворки, в чем они именно быстрее и какие именно фреймворки ?

    • @ashimov1970
      @ashimov1970 ปีที่แล้ว

      @@AndreyChuprin0101 глянь видео "Blazor wasm VS Angular. Катастрофический результат сравнения"

    • @AndreyChuprin0101
      @AndreyChuprin0101  ปีที่แล้ว +1

      @@ashimov1970 ​ Просмотрел и почитал о Blazor немного - проблема именно в нем, он лишь использует обертку WASM, а потом как-то соединяет среду выполнения .NET и браузера, я не сильно углублялся в механизм за счет которого это все дело работает, но суть в том, что код C# не выполняется прямо в баузере в привычном понимании. А если использовать wasm-pack - он компилирует код Rust в WASM, с которым уже и работает браузер. Непосредственно на прямую в браузере запускается либо JS, либо WASM, другого не дано - 100%. А сам WASM вполне успешно используется на довольно крупных и успешных проектах: Figma, AutoCAD и т.д.

    • @AndreyChuprin0101
      @AndreyChuprin0101  ปีที่แล้ว

      @@ashimov1970 тут дело не в самом C# или Rust, дело именно в реализации. + на одном из открытых источников встретил такое вот предложение о Blazor: "Файлы, загруженные браузером, имеют большой размер, что влияет на увеличение нагрузки сети и на время загрузки в целом, так как приложения работают на стороне клиента", это может объяснить долгую загрузку в начале у автора.

    • @AndreyChuprin0101
      @AndreyChuprin0101  ปีที่แล้ว

      @@ashimov1970 Но в любом случае - спасибо вам. Я впервые увидел такой способ реализации, мб где-то будет для меня полезным).

  • @user-be8dc2el2d
    @user-be8dc2el2d 7 หลายเดือนก่อน

    0 мс, цикл проходит моментально? чудеса да и только...

    • @AndreyChuprin0101
      @AndreyChuprin0101  6 หลายเดือนก่อน

      Нет, не моментально) Есть величины меньше мс)