はじめに
このブログで紹介してきた最適化に関するオススメの記事を45件まとめました
目次
全般
iOS / Android
- iOS の IL2CPP ビルド時にアプリ容量を減らせる「Unity3D.UselessAttributeStripper」
- iOS アプリの容量を削減できる「Unity.iOS.OnDemand」
- iOS においてアプリがクラッシュした時の情報を取得できるクラス「CrashReport」
- iOS / Android でアプリの起動時間を測ることができる「UnityInitializeTimeChecker」
- iOS / Android で使用メモリを確認できる「MemoryChecker-Unity」
- iOS / Android でメモリが不足してきた時に呼び出される「Application.lowMemory」
スクリプト
string
- string の連結を StringBuilder に置き換えて処理速度改善「StringBuilderTemporary」
- string や StringBuilder よりもメモリ割り当てが少なく高速なクラス「FastString」
- ボックス化をなるべく回避して GC の発生を抑える string.Format
- string.StartsWith と string.EndsWith は処理速度が遅いので改善する
Dictionary
列挙型
プロファイラ
GC
- デリゲートを指定する時に関数名ではなくラムダ式を使用して GC の発生を抑える
- Action デリゲートは 104B の GC Alloc が発生するがインターフェイスなら発生しない
- Mesh.vertices ではなく Mesh.SetVertices を使用して GC Alloc の発生を防ぐ
- Tween ライブラリの GC Alloc を知る
- パフォーマンス改善 文字列連結編
- GC の発生を抑える ~文字列の操作編~
- GC の発生を抑える ~リストの操作編~
検証
- ログ出力を無効化する時に「logEnabled」「Conditional」どちらが高速か
- Dictionary で IEqualityComparer を使用した場合と使用しなかった場合どちらが高速か
- Material の SetXXXX 関数で「propertyName」「nameID」どちらを渡す方が高速か
- 一度読み込んだリソースをキャッシュする場合としない場合どちらが高速か
- CSV と ScriptableObject どちらでマスターデータを管理したほうが高速か
- 複数のリソースの読み込み速度の検証結果
- 配列やリストなどのコレクションの検索速度の検証結果
- ループ構文の処理速度の検証結果
- GameObject.Find 系関数の処理速度の検証結果
その他
- gzip で文字列を圧縮してデータ容量を抑える
- JsonUtility を使用して出力する Json ファイルの容量を少しでも減らす
- 開発中のアプリがメモリリークで強制終了するようになった時に対応したこと
- シーンのビルドインデックスを定数で管理するクラスを生成する拡張機能
- AudioClip のインポート時に iOS と Android で設定を分ける