※ 引述《erspicu (.)》之铭言:
: 只是sideproject需求 想说wasm出来也算几年了
: 撇开.NET的Blazor框架不谈 (是说转战Blazor的公司也不多的感觉)
: 目前好像看到wasm应用的机会不是很广
wasm是一个vm,js是另一个vm,两个互相传资料其实很麻烦,最简单就是copy/拷贝资料过去,但效能就差。
大笔资料就是用SharedArrayBuffer来分享,但这个需要自己管理内存,并不是每个语言都适合的。所以后来才会有WasmGC的诞生。
: 自己是想用这种方式来处理相簿上传照片的处理方式 所以稍微study实作了概念
: https://github.com/erspicu/LanczosWasmDemo
: Lanczos缩图法 大概是几年前我所知缩图品质比较好的方式 实作也不会太复杂
: 但移植出来的成果运算速度差 .net framework在win11 x64上太多
: 可能有100倍以上差异 打个比方 90ms 变成 9秒
compiler很重要,你写的程式用<<16, >>16来 pack data,需要够聪明的compiler来最佳化。我会用array of struct {r,g,b}或直接用byteArray来减少compiler的变量。
: 但不排除有再优化的可能性 像C#的Parallel.For
: 移植到WASM上后 其实并没有平行加速运算的实际效能...
: 给大家研究看看 (所以最后还是换成单纯循环)
: C/C++ N年没相关工作经验写了 说不定C移植过去效能会好上非常多
我自己有写个小Js Parallel.For的lib来应用webworkers。但webworker跟wasm都需要SharedArrayBuffer来分享data,所以并不是很容易用。
今天wasm,跟webworker无法普及起来,就是因为无法无脑用。
https://web.dev/case-studies/google-sheets-wasmgc
google花了很大的力气,才使java/wasmgc有2x Js的效能。
今天,网页的平台,实在不算好用,需要花足够的时间去学习,还要有够扎实的低阶语言能力,才能应用的好。但没办法,网页安全性是第一优先。