Canvas と SVG の性能について
2018-05-14 |
[Programming]
ブラウザ上で図形を表示する代表的な方法に Canvas と SVG があるが,この 2 つの性能を簡単に比較してみた.
Canvas と SVG で,ランダムに 10 万本の直線を 1000 * 1000 の描画領域に描画し,かかった時間を比較した.
結果
Firefox
ただし,SVG 部分までスクロールするとかなり重くなり,なかなか表示されない.
特に,タブを切り替えてまた戻ってくるときにもしばらく待たされる.
さらに,関係ないタブまで表示が遅くなったりする.
Chrome
canvas: 235.3251953125ms
svg: 1091.056884765625ms
一度描画されれば,SVG 部分も Firefox の場合ほどは重くない.
Microsoft Edge
複数回再読込したあげく,表示に失敗した.
なお,SVG 描画を無効にして読み込むと,canvas 部分は正しく描画される.
結論
canvas はビットマップベース,SVG はベクターベースという違いはあるため,単純には比較はできないものの(SVG のほうが,見た目は高精細になる)
10 万本もの直線を描画する必要がある場合は,SVG を用いると処理が重くなりすぎるため,canvas を使ったほうがよさそうである.
コード
以下のコードを実行すると,