Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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を利用していこうと考えています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした