[討論] 有公司使用到WASM技術了嗎?
只是sideproject需求 想說wasm出來也算幾年了
撇開.NET的Blazor框架不談 (是說轉戰Blazor的公司也不多的感覺)
目前好像看到wasm應用的機會不是很廣
不是說它不厲害 而是到底要做什麼方面的應用
當然我知道可以port c/c++其他語言到網頁上 移植遊戲
或是做一些比較需要高效能的運算等等 不過一般狀況下好像就不知道怎樣應用好
但我之前有一個構想 就是上傳圖片.縮圖.壓縮 或是上傳影片
這些原來的設計多數是把檔案原封不動上傳到後端 再從後端排程處理
如果前端可以直接處理掉圖片.影片的縮圖與壓縮 再把處理結果上傳到後端
理論上可以減輕後端負擔以及節省上傳頻寬資源
自己是想用這種方式來處理相簿上傳照片的處理方式 所以稍微study實作了概念
https://github.com/erspicu/LanczosWasmDemo
Lanczos縮圖法 大概是幾年前我所知縮圖品質比較好的方式 實作也不會太複雜
我自己用在x64 win11環境下測試用.net framework 最優化後
(用很c風格的指標處理方式+多核平行運算)
好比說4096*3072 縮到1600x1200 一張圖計算大概都是100ms內 一瞬間的事情
原本參考這方式
https://koshian2.hatenablog.jp/entry/2017/11/23/212813
但這效能差 而且其實算出來的畫面有些問題
想說效果很不錯想把縮圖算法移植到wasm功能上
剛好看到 https://tinyurl.com/mrm2r86r 這篇
可以用我比較熟悉的c#去做移植
但移植出來的成果運算速度差 .net framework在win11 x64上太多
可能有100倍以上差異 打個比方 90ms 變成 9秒
原本以為可以把c#編譯成不需要仰賴.net虛擬機的方式跑
結果稍微看架構 好像是把.NET虛擬機在WASM實作然後去跑.NET PORT過去的東西
加上在瀏覽器WASM環境內 沒有像直接跑在電腦上 有JIT優化
所以速度有差 (wasm虛擬機跑.net虛擬機跑.net cli 套娃...)
但不排除有再優化的可能性 像C#的Parallel.For
移植到WASM上後 其實並沒有平行加速運算的實際效能...
給大家研究看看 (所以最後還是換成單純迴圈)
C/C++ N年沒相關工作經驗寫了 說不定C移植過去效能會好上非常多
我的專案就分享給對C#在WASM應用有興趣的人參考
https://github.com/erspicu/LanczosWasmDemo
也希望加速的部分 可以分享解決方案
Parallel.For 也不知道實際移植過去到底是怎樣
平行處理的部分可能用別方式置換掉
Web Worker或是webgpu不知道可不可行
最終我心中的理想應用場景 大概是使用者上傳圖片和影片
把縮圖跟編碼的工作丟給前端處理完上傳
這大概是目前我想到還滿好用通用的應用場景
ps.c#移植wasm,其實滿多功能無效,編譯器會提醒,
有些功能不然就要找別方案替代,不然就要自己實作,
所以也不是爽爽可以無痛把c#相關資源丟到前端上
牽涉到跟os依賴的部分 很多都不可用 看跳一堆警告
最後毅然把原本的bitmap物件使用移除掉了
--
要不要參考這個項目,好像是谷歌寫的PWA,也是壓縮圖
片影片之類的,還能安裝在本地的樣子,或許跟你的專
案有相似的地方
類似做法 看他的GITHUB 一些演算法.編解碼也是用WASM移植其他語言專案 但.NET方案有點像套娃 理論上他的效能會比較好 有現成工具可以順利應用的話 如果效果理想 大概就可以直接用了
※ 編輯: erspicu (219.68.24.12 臺灣), 07/02/2024 02:15:47compress.js, pica, browser-image-compression
你知道wasm跟js是怎麼互相call?資料怎麼傳?你這個要搞清
楚。wasmGC是用來解決一部份這類的問題。wasm你需要管理
記憶體,不然光是copy就吃掉一堆效能。而且wasm的compiler
本來就比java/c#差很多,效能差是正常的。所以不用c/c++或
直接wasm assembly,還要規劃好資料的傳遞,不然根本直接
js+typedarray就好了。
js的效能是非常好的,不要有錯誤的觀念。所以除非你的
wasm程式規劃的很好,不然比js差是正常的。c#除非移植到
wasmGC,不然高效能是很難的。
問過safari用戶了嗎?相容性搞死你
webgl/glsl來跑lanczos是最快,最簡單,相容性最好的方法
webgl/glsl處理影像容易,程式也容易,只是入門難而已。
從這篇追回去,你大概就知道怎麼做了
推一個實作精神
Blazor就容易上手 沒有容易的框架這是wasm主要的門檻
支援度沒辦法全部就沒法正式上線 只能當玩具
上線一堆奇怪手機瀏覽器直接搞死你
就稍微可以用client端攤原本server端要做的運算
然後有些運算可能javascript算得比wasm還快
就當作玩具 什麼時候還有機會要用不知道 影片編碼就
算了 速度真的不行
有幾個crypto project就是用wasm部署到用戶client
讓用戶的瀏覽器可以做一些鏈操作
https://tinyurl.com/2mdzga63 Tezos就是一個例子
ffmpeg 可以簡單做些操作
曾經做過 WASM 插進 envoy 裡當作 microservice sidecar
filter
另外一個神級 WASM 應用範例是 Figma
5
wasm是一個vm,js是另一個vm,兩個互相傳資料其實很麻煩,最簡單就是copy/拷貝資料過去,但效能就差。 大筆資料就是用SharedArrayBuffer來分享,但這個需要自己管理記憶體,並不是每個語言都適合的。所以後來才會有WasmGC的誕生。 : 自己是想用這種方式來處理相簿上傳照片的處理方式 所以稍微study實作了概念 : : Lanczos縮圖法 大概是幾年前我所知縮圖品質比較好的方式 實作也不會太複雜1
我們家的主要產品有。 我們的用途主要是用在讓 web/ios/android 共用相同的底層, 並且把一些比較底層的操作加速。 有些底層不是我們能隨便重寫的,所以這樣做是權衡方案, 另一方面 wasm 的逆向複雜度也高,有一定的安全效果,
38
[討論] 沒落的技術Javascript和興起的王者wasm一堆課程狂推Javascript卻忽略新時代潮流 W3C已經把Webassembly列為推薦開發指南 Ebay甚至把部分網頁替換成webassembly 序列化速度28
[請益] C# MVC學習方向與系統建置大家好 背景: 小弟在一家傳產擔任IT,目前公司使用的技術很舊(D2K、VB6)。 最近有個需求就是要在行動裝置上顯示資訊,我認為最合適的方式就是網頁。 (ex:在平板上呈現機台狀況、在手機上做簡單的資料查詢)18
[Coin] 有人也看好astar 嗎?今天Astar 逆勢上漲 不知道四月中後項目陸續上了之後 會漲到多少? Wasm是未來趨勢嗎? 有研究的前輩可以分享嗎?17
[請益] 學習.NET CORE MVC後續...大家好: 我從今年6月開始學習.net mvc到現在,在公司也嘗試用mvc在開發專案 現在已經開始學習.net core mvc了 我有在網路上搜尋到angular、vue、react(這些似乎是前端在寫的?) 不知道是否需要學這些技術來跟.net core mvc搭配?15
[問卦] 現在開始學C#還有.NET是好時機嗎?小弟我自己平常主要寫App、有時寫點Web 技術棧架構是 iOS使用 Swift+XCode開發 Android使用 Kotlin+Android Studio開發 有時會使用跨iOS/Android平臺的框架,例如:11
Re: [討論] 請大家聊聊 JavaScript的缺陷推 laputaflutin: 同意樓上,不過看到這次美國大選很多新聞網都拿 11/04 21:02 → laputaflutin: svelte來寫,感覺蠻有趣的,應該會拿來試試看 11/04 21:03 禁不住好奇心的我終究還是去看一下 Svelte, 原來它是個反 React、反 Vue、反前端在瀏覽器動態解析樣板的框架兼開發工具。 它讓你在開發時期能夠先以 js 程式碼定義資料,8
Re: [心得] 提升 .Net 工程師薪資的 2 種做法: : 圖文並茂版: : : :4
Re: [討論] 沒落的技術Javascript和興起的王者wasm2年多就這樣過去了 新一代王者Webassembly現在發展的怎麼樣??? 請問有前端開發者熟悉Webassembly可以分享一下目前應用的現況嗎?? --1
[心得] 2020-3-13 每日新聞#每日新聞 # 2020-3-13 每日新聞 # FB: # C#: 對於使用Entity Framework和micro-ORM的反對論點 這邊針對兩個ORM做討論- 以前就有想要從.net生態跳出去的想法 但是其他語言越寫越覺得.net真舒服 不知不覺就越寫越深了 但是深入的概念感覺用到的機會不多 1. ERP MVC