Cockatiel技術ブログ

株式会社ピュアサウンドのオーディオソリューション。いろいろ音を鳴らしています。

Unity

Unityオーディオの負荷について-Load Type&Compression Format比較編

投稿日:

前回の記事では、実際にUnity内で音を鳴らした場合の、オブジェクト数や2D/3Dの有無による計測を行いました。

今回は、オーディオクリップのLoad TypeやCompression Formatの違いによる比較をしてみたいと思います。

Load Type三種類、Compression Formatは『PCM』『ADPCM』『Vorbis(Quality1)』『Vorbis(Quality100)』の四種類を組み合わせ、合計12パターンの計測を行っています。

なお比較項目が多数のため、今回はテーブルでなくグラフ画像を載せています。
各画像はクリックで拡大表示可能です。

オブジェクト1個の場合

前回の記事と若干被りますが、手始めにオブジェクト1個での各組合せを調べます。

まずCPU使用率のグラフです。横軸は5%を最大値にしています。
どの組み合わせも1%前後とさほど大きな負荷にはなっていません。
Streamingで鳴らした場合だけ、グラフ内オレンジ色のStreamingCPUが表われる特徴がみられますね。

メモリに関しては、横軸25MBを最大としています。
Decompress On Loadの場合に灰色のSample Sound Memoryが表れますね。
黄色のOther Memoryはどの組み合わせでも必ず一定サイズが存在します。
Unityのサウンドが使用しているシステム領域のような感じでしょうか。

オブジェクト100個の場合

まずはCPU使用率です。1個の場合と異なり、横軸の最大値は100%となっています。
おおよその予想通り、Decompress On Load < Compressed In Memory < Streaming の順でCPU使用率が上がりますね。

興味深いのはPCMフォーマットでも結構CPU使用率があることと、VorbisのQuality1のCPU使用率が低い点です。
とはいえ、Quality1の音質はお察しなので使用場面は限られますが……

続いてメモリのグラフです。

Streamingのメモリ使用量がエグい……!

Decompress On LoadとCompressed In Memoryはオブジェクト1個の時とほとんど差がないのですが、Streamingが想像以上にスゴイ結果となりました。
File MemoryとDecode Memoryと同じ量のメモリを二つ確保するため、メモリの使用量も極端に大きくなっています。

オブジェクト2個/3個の場合

気になったので、オブジェクトが2個と3個の場合のメモリ使用量も計測してみました。

赤丸のところに注目です!
グラフではわかりづらいですが、オブジェクトが1個増えるごとにStreaming File MemoryとStreaming Decode Memoryがそれぞれ124KBずつ増えています
どうやらストリーム再生用のメモリバッファは、オブジェクトの分だけ生成されてしまうものと推測できます。
これが100個のオブジェクトをストリーム再生した際の極端なメモリ増加の原因かと思われます。

おわりに

やみくもにストリーム再生を使うと、大量生成した再生用オブジェクトによってCPUとメモリ両方に大きな負担がかかってしまいます。

ここまでの内容だとストリーム再生のメリットが少ない印象になりがちですが、BGMのようなメモリに置くのが難しいほどの大きいデータサイズのサウンドを鳴らしたいときに用いるのが効果的です。

では、Load TypeとCompression Formatの組み合わせはどのように使い分けるのが適切なのでしょうか?
次回以降は、効果的な運用例を解説したいと思います。

-Unity
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

4 + 2 =

関連記事

no image

Unityオーディオの負荷について-各フォーマットのメリットデメリット

前回は100個のサウンドを鳴らして、CPU使用率やメモリサイズの比較を行いました。単純比較ではストリーム再生がCPUとメモリともに負担が大きいという結果が出ましたが、やはり長いファイルを演奏するときに …

no image

UnityオーディオクリップのCompression Formatについて

大変ご無沙汰しています! 最近ピュアサウンドではUnityでの開発に関わることが多くなっています。 高度なオーディオ処理のためにCRIWAREやWwiseといったサウンドエンジン使用は定番になりつつあ …

no image

Unityのエディタ拡張『CTAudioPreviewer』をリリースしました

昨日4/16、Unityアセットストアにてエディタ拡張『CTAudioPreviewer』をリリースしました。 CTAudioPreviewer – Asset Store CTAudio …

no image

Unityオーディオの負荷について-オブジェクト数&2D/3D比較編

前回の記事ではオーディオクリップのCompression Formatによる音質とデータサイズの違いに触れました。ここからは複数回に分けて、様々な条件でCPUやメモリ負荷の比較をしていきたいと思います …