こんにちは、DI好きですか?
僕は大好きです
でも手動で依存関係を注入するのはつらいです…
そこでZenjectに自動的に注入してもらいましょう
Zenject入門はこちら
でもゲームプログラマーならパフォーマンスが気になりますよね
win standaloneでprofiler測定してみました!(↓はいずれもprofilerの値
##処理時間 [ms]
配列数 | normal | inject*1 | inject*10 |
---|---|---|---|
1000 | 1.44 | 15.68 | 52.31 |
10000 | 8.27 | 58.15 | 160.36 |
##GC Alloc [KB]
配列数 | normal | inject*1 | inject*10 |
---|---|---|---|
1000 | 23.5 | 242.5 | 378.8 |
10000 | 234.4 | 2252.8 | 3072 |
##まとめ
zenjectを使ってpureC#クラスを作成すると大雑把に10倍以上の時間がかかりますね
inject数が増えれば時間も増える傾向にありますね
GC allocも10倍くらい消費します
ターゲットデバイスに依りますが
要素数が1000を超えると処理落ちするし、GC allocも大幅に増えるのでzenjectを使うより手動DIした方がよさそうです