iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0
Vue.js

Vue3.6 的革新:深入理解 Composition API系列 第 24

Day 24: 低階裝置測試 - 手機瀏覽器下的 Vapor 表現

  • 分享至 

  • xImage
  •  

我們在桌機環境測過 Vapor Mode + Alien Signals 的效能提升。

然而,桌機硬體往往遠比行動裝置強大,實際上線的用戶端多數是手機,這篇就來挑戰一個關鍵問題: Vapor Mode 在低階手機上,真的有體感提升嗎?

測試目標


  1. 比較平台:

    • iPhone 8 (iOS 16 / Safari)

    • Android 低階機 (Snapdragon 665 / Chrome)

    • 參考組:桌機 (Chrome 140)

  2. 測試場景:

    • 1,000 個同時運作的 composables(大量 watchEffect + ref 更新)

    • 高頻率事件更新(滑動 / resize / 連續 input)

    • 開啟/關閉 Vapor Mode 做 AB Test

測試環境建置


啟用 Vapor Mode

// vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue({ vapor: true })]
})
Vapor Mode 為 Vue 3.6 新增選項,透過編譯跳過 Virtual DOM Diff。

建立壓力場景

<script setup lang="ts">
import { ref, watchEffect } from 'vue'

const boxes = Array.from({ length: 1000 }, (_, i) => ref(0))

setInterval(() => {
  boxes.forEach((b, i) => (b.value = (b.value + 1) % 1000))
}, 16) // 每 16ms 更新一次
</script>

<template>
  <div class="grid">
    <div v-for="b in boxes" :key="b" class="box">{{ b }}</div>
  </div>
</template>

測試工具

  • iPhone / Android:Safari / Chrome → 打開 Performance 或 Remote Debug。
  • 桌機:Chrome DevTools → Performance & Lighthouse。

測試結果


裝置 Vapor Mode 關閉 Vapor Mode 開啟 差異
iPhone 8 (A11/Safari) 平均 18 FPS 平均 40 FPS +122%
Android 低階機 (Snapdragon 665/Chrome) 平均 12 FPS 平均 28 FPS +133%
桌機 (i7/Chrome) 平均 50 FPS 平均 55 FPS +10%

低階裝置差異最明顯:iPhone 8 與 Android 舊機的 FPS 接近 翻倍
桌機提升有限:因為 CPU/GPU 足夠,Virtual DOM Diff 的成本相對小。

為什麼低階機差異如此大?


  1. Virtual DOM Diff 成本

    • 舊型 CPU 單核心性能低,Patch 過程成為瓶頸。

    • Vapor Mode 直接輸出 DOM 更新指令,省下比較運算。

  2. GC (Garbage Collection)

    • 傳統 VDOM 需要生成大量 JavaScript Object。

    • Vapor Mode 減少 VNode 建立 → 減少 GC 觸發次數。

  3. Alien Signals 精準追蹤

    • 舊機記憶體頻寬較低,細粒度依賴追蹤減少多餘更新。
問題 影響 解法
CSS Repaint/重排 DOM 更新再快也可能被樣式計算拖慢 減少複雜 CSS、使用 transform 動畫
大型圖片資源 低階機下載 + 解碼慢 使用 lazy-loading、WebP
第三方套件未優化 仍可能引入多餘 VDOM 優先選擇官方支援 Vue 3.6 的套件

小結


  • Vapor Mode 在低階手機上提供 最直接的體感提升

  • Alien Signals 讓高頻率依賴追蹤不再成為效能黑洞。

  • 資源管理(圖片、CSS)仍是關鍵瓶頸,沒有任何框架能替你解決「下載與重排」的物理極限。

參考資料


  1. 分析執行階段效能
  2. v3.6.0-alpha.1

上一篇
Day 23: 跨套件的響應管理 – Vapor Mode 下的引用套件挑戰
下一篇
Day 25: SPA vs MPA - Vapor 架構策略
系列文
Vue3.6 的革新:深入理解 Composition API28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言