9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity5.3のAssetBundleパフォーマンス計測

Last updated at Posted at 2016-02-28

Unity5.3になり、AssetBundleの性能が改善されました。
実際どれぐらいの差があるのか簡単ですけどパフォーマンス計測してみました。

参考にした公式のAssetBundleのサイト
Asset Bundle Compression
Asset Bundle Internal Structure

LZ4形式

Unity5.3になり、一番大きな所としては、「チャンクベース」のLZ4形式をサポートした所。
どういう事かというと、今まではLZMA形式で、ひとまとまりのAssetBundleが合った時に、全体を解凍する必要があったのですが、特定のAssetのみを圧縮した状態でも解凍できることにより、圧縮したまま保存ができ、読み込み時の負荷が減りメモリ使用量が良くなるというものです。ただし、ディスク上のファイルサイズはLZMAより1.5~2倍ぐらいに膨れ上がります。

ただ、LZMA形式に関してですが、公式の説明を見ると、ダウンロード後にLZ4形式に再圧縮しているみたいな記述があるので、ダウンロード後に関してはさほど差はないかも知れません。

LZ4形式への変換方法

AssetBundleを作成する際に指定する、BuildoptionにBuildAssetBundleOptions.ChunkBasedCompressionのフラグを追加します。

計測条件

しっかりと計測したわけではなく、手元の環境でにあるものを使用したので、
計測として足りない部分はあるのですが、以下の様な条件で実行しました。
・LoadFromCacheOrDownloadを使用
・compressionEnabledはtrue
・AssetBundleにするデータはFBXとテクスチャを1000ファイル程使用し、一つのAssetBundleを作成
・AssetBundleにする前の全ファイル数のサイズは300MB程
・iPhone5とXCodeを使用し計測
・ダウンロード後は、GetAllAssetNamesとLoadAssetを使用し全ファイルの読み込み

計測結果

圧縮形式 Unity4-LZMA Unity5-LZMA Unity5-LZ4
ディスク上のファイルサイズ 23MB 24MB 36MB
キャッシュ後のサイズ 66MB 43MB 38MB
ダウンロード時間 8.3秒 9.7秒 5.2秒
ダウンロード時のメモリ使用量 60.5MB 51.7MB 60.84MB
Load時間 Load関数が違うため未計測 23.6秒 25.3秒
Load時のメモリ使用量 Load関数が違うため未計測 45MB 47MB

結果としては上記のようになりました。
LZ4形式のAssetBundleがキャッシュ後のサイズ、ダウンロード速度ともに優秀でした。
メモリ使用量に関しては、LZMAの方が優れていました。Load後の数値に関しては、誤差な部分ではあると思います。

※ここに記載している数値は、AssetBundleの内容、通信環境、実行環境により変動するものであり、絶対的なものではないので、各環境上で計測していただき、参考程度に捉えて頂ければと思います。

まとめ

LZ4形式はファイルサイズが膨れ上がりますが、パフォーマンスの向上が見込まれます。
利用するにも、AssetBundle作成時にBuildoptionを設定するだけで、既存のプログラムを変更する事なく動作しますので、移行コストはかかりません。
ですので、Unity5.3以降では、LZ4形式のAssetBundleを利用していこうと考えています。

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?