小西 裕介 @konifar /konif 株式会社 奇兵隊 エンジニア
ポルノ写真フィルタリング
• ユーザー(特に中東)の投稿がトラウマレベルのヤバさだったので対応
• 肌色検出 & 肌色割合のロジックを地道にチューニング
わりと最近やった仕事
PC・ツール不要で楽チン。すぐできる。 !
1. Strictモード 2. GPUレンダリング分析 3. GPUオーバードロー
便利なDeveloperモード
パフォーマンスを低下させる Accidental disk や Network Activity を捕捉すると点滅する!
1. strictモード
2. GPUレンダリング分析GPUの使用状況をリアルタイムで表示!
2. GPUレンダリングGPUの使用状況をリアルタイムで表示!
青 : (Draw)JavaのViewの構築 にかかった時間
赤 : (Process)2D レンダリング にかかった時間
黄 : (Execute)表示の実行 にかかった時間
緑 : (Limit)60fpsの目安
3. GPUオーバードロー何回描画されてるかを可視化!
3. GPUオーバードロー何回描画されてるかを可視化!
青 : 1回(OK)
緑 : 2回(ギリギリセーフ)
赤 : 3回(ダメ)
濃赤 : 4回以上(修正必須)
修正の流れ
遅いところを探して直す !
Googleの言ってる基本原則 1. 必要ない処理をしない。 2. 不必要なメモリ割当を行わない。
!
ボトルネックをちゃんと調べるのが近道。
Android Studio なら特に簡単 !
1. Method Tracking(TraceView) 2. DeviceMonitor(HierarchyView)
便利ツール
どのメソッドに時間がかかってるか 1クリックでトラッキングできる
Method Tracking
Hierarchy Viewビューの階層構造が一目でわかる
https://www.youtube.com/watch?v=PAgE7saQUUY
Viewの最適化 ①narrowよりsharrowなView構造
Viewの最適化 ②View の backgroundをやめて
Theme の windowBackgroundを使う
1. オブジェクト生成は少なく! 2. フィールドはなるべくstaticに。 3. 定数はstatic final に。 4. Getter、Setterを避ける。 5. 拡張for文を使う。 6. インナークラスのフィールドスコープはパッ
ケージスコープに。
7. floatよりint。 8. Androidライブラリメソッドを使う。
細かい実装 Tips
細かい実装 Tips
細かいけど、発展途上国などでは スペックの超低い廉価端末が主なので こういう小さい修正が効いてくる
1. 提供されてるツール使うと便利。 2. Android Studio使うともっと便利。 3. すぐ試せるのでやってみるといいかも。 4. レイアウトやコードの実装に気を遣おう。
まとめ