成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

圖形編輯器開發:是否要像 Figma 一樣上 Wasm

開發 前端
Figma 從一開始就是用 C++ 寫的。在 Wasm 被瀏覽器支持之前,Figma 使用 wasm 的前身 asm.js 去轉成 JavaScript,使其可以在瀏覽器上運行。Wasm 在 2017 年被瀏覽器實裝,Figma 自然而然用上了 Wasm,沒有太多的改造成本。彼時,Figma 發現在 Chrome 運行 Wasm 有 BUG,會失敗。Firefox 則能正常運行。

大家好,我是前端西瓜哥。

wasm 拿來做 Web 端的圖形編輯器貌似是不錯的選擇。

因為圖形處理會有相當多無法利用到 WebGL GPU 加速的 CPU 密集的計算。比如對一條復雜貝塞爾曲線進行三角化,對多個圖形進行復雜圖形的布爾運算。

圖形編輯器性能天花板 Figma 用了 wasm,我們也該用嗎?

Figma 的性能提升

說到 wasm 和圖形編輯器,經常有人提到 Figma 的加載速度提升為原來的三倍。來自 Figma 官方這篇文章:

《WebAssembly cut Figma's load time by 3x》

閱讀后我有了不少收獲。

Figma 從一開始就是用 C++ 寫的。在 wasm 被瀏覽器支持之前,Figma 使用 wasm 的前身 asm.js 去轉成 JavaScript,使其可以在瀏覽器上運行。

wasm 在 2017 年被瀏覽器實裝,Figma 自然而然用上了 wasm,沒有太多的改造成本。

彼時,Figma 發現在 Chrome 運行 wasm 有 BUG,會失敗。Firefox 則能正常運行。Edge 和 Safari 則要過幾個月才實裝。

所以這篇文章的對比數據 只是針對 Firefox 的,是 C++ 通過 asm.js 編譯成 js,以及編譯為 wasm 這兩者的性能對比,不是原生 js 和 wasm 的對比。

首先是加載速度提升為原來的 3 倍。加載指的是打開頁面,圖紙的繪制效果最后展示出來的這個過程。

一個很大的設計圖紙,原來加載需要 12s 左右,現在只需要 4s,不得不說這提升確實不錯,極大提高用戶的使用體驗,尤其是用戶經常要打開一些大圖紙的場景。

這里 wasm 速度提升的原因:

  • wasm 的字節碼解析快,并直接編譯,而 JavaScript 需要 JIT 在運行的過程中去逐步判斷是否要對特定代碼進行編譯優化。
  • CPU 復雜計算相當多,累加起來 wasm 就是比 js 快。
  • 另外一個利好,就是 wasm 編譯出來的機器碼會被緩存下來,第二次加載直接不用編譯了。JavaScript 則要照常解析。

其實我更在意的是在 Chrome 的表現,它是占有率最高,其使用的 v8 引擎性能比 Firefox 的要好。但 asm.js 的優化更多針對的是 Firefox 的,在 v8 上不知道是否有效果。

然后對比了它們的體積變化,體積減少并不是很明顯。尤其是壓縮之后。

理論上 wasm 保存不是文本,是字節,數據會更緊湊,體積一般要少得多。

不過需要注意的是這里的也是 asm.js 編譯產出,并不是原生寫的 JS 邏輯。

我其實挺好奇 Figma 為什么選擇用 C++ 去開發?

我猜可能團隊成員更熟悉 C++,應該有不少來自圖像處理軟件公司的大佬。這些軟件用什么寫的?多半是 C++。選擇 C++ 是團隊的最好的選擇。

另外服務端也是要運行編輯器的渲染邏輯的(比如生成預覽圖),C++ 要比 nodejs 性能高得多,消耗更少的資源。Nodejs 甚至沒有 Canvas 環境,通常會生成 SVG 用一些第三方轉成圖片。

或者可能需要用到一些JavaScript 沒有的 C++ 圖形庫。我發現國內一些圖形編輯器廠商貌似挺喜歡用 Skia(Canvas 2D 的底層調用庫,開源)的,wasm 倒挺合適。

是否上 wasm?

做圖形編輯器,如果要做到性能優化到極致的,還是要看看頭部公司在做什么,業界的最新技術是什么。

為了極致的性能,還是很有必要用 wasm 的,當然這得一開始做產品的時候就用,像 Figma 一樣。招人的時候要求 C++。

如果已經用 JavaScript 了,然后想用 C++ 重構去轉 wasm 我感覺不太可能,這個投入產出比太低,團隊也沒這個基因,你還想基因突變不成。

如果只是將部分功能做成 wasm,我不好說,不知道會不會有通信上的問題,可能有點搞頭。

只是做個簡單的圖形編輯器,性能要求不高,能用就行,比如白板工具、表格,就沒必要用 wasm 了,甚至 WebGL 都可以不用,直接 Canvas 2D 走起。

最后需要強調的一點是,Figma 強大的原因在于 WebGL 的硬件加速,wasm 更多的是錦上添花的作用。你得好好確認你的圖形編輯器的瓶頸在哪里。

責任編輯:姜華 來源: 前端西瓜哥
相關推薦

2023-10-19 10:12:34

圖形編輯器開發縮放圖形

2023-09-07 08:24:35

圖形編輯器開發繪制圖形工具

2023-08-31 11:32:57

圖形編輯器contain

2015-02-05 13:27:02

移動開發模塊SDK

2012-06-14 09:48:11

OpenStackLinux

2023-09-26 07:39:21

2024-01-08 08:30:05

光標圖形編輯器開發游標

2023-09-11 09:02:31

圖形編輯器模塊間的通信

2023-04-05 14:19:07

FlinkRedisNoSQL

2023-08-28 08:10:50

Hex圖形編輯器

2023-10-10 16:04:30

圖形編輯器格式轉換

2023-10-08 08:11:40

圖形編輯器快捷鍵操作

2012-03-21 21:14:33

喬布斯

2013-12-17 09:02:03

Python調試

2013-12-31 09:19:23

Python調試

2023-05-23 13:59:41

RustPython程序

2022-12-21 15:56:23

代碼文檔工具

2023-07-07 13:56:01

圖形編輯器畫布縮放

2024-01-03 08:43:17

圖形編輯器旋轉控制點縮放控制點

2023-07-31 08:46:07

圖形編輯器圖形自動對齊
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品视屏 | 国产精品视频专区 | 国产va| 欧美精品一区在线 | 夜夜精品视频 | 久久精品国产清自在天天线 | 欧美国产视频一区二区 | 久久久久久国产 | 亚洲人成人一区二区在线观看 | 欧美一区二区三区在线观看 | 日韩电影免费观看中文字幕 | 黄篇网址 | 综合婷婷| 天天操狠狠操 | 我要看免费一级毛片 | 欧州一区二区三区 | 国产精品美女久久久av超清 | 久久亚洲国产精品 | 亚洲性视频 | 午夜精品久久久久久久久久久久 | 欧美一级片在线播放 | 免费观看一级黄色录像 | 欧美成视频在线观看 | 久久精品中文字幕 | 精品国产一区二区三区四区在线 | 欧美a在线看| 日韩三级电影在线看 | a国产视频 | 日本精品一区二区在线观看 | 一区二区三区精品在线视频 | 免费黄网站在线观看 | 日韩三级在线观看 | 国内精品在线视频 | www亚洲免费国内精品 | 亚洲不卡在线观看 | 日韩精品久久一区二区三区 | 日日天天 | 国产精品区二区三区日本 | 亚洲欧美激情国产综合久久久 | 美女黄网站 | 91久久久久久久久久久久久 |