Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Androidにおけるパフォーマンスチューニング実践

neonankiti
February 08, 2019

 Androidにおけるパフォーマンスチューニング実践

再現性が低い改善が難しいパフォーマンス問題に対処するために、パフォーマンスの前提知識をつけ、定性と定量との両輪からアプローチしていく方法論に関して話しています。

- パフォーマンス改善の発端
- アプリパフォーマンスの定義
- パフォーマンス課題
- UIの改善
- データ通信量
- バッテリー消費

neonankiti

February 08, 2019
Tweet

More Decks by neonankiti

Other Decks in Programming

Transcript

  1. ɾFPS = Frame Per Secondsɻ ɾਓؒ͸ɺ60FPS͕࠷దͱײ͡Δ Frame Rateͱ͸ ɾ60FPS ≒

    16ms/frame ≒1ඵؒʹॲཧ͞ΕΔϑϨʔϜ਺(੩ࢭը໘)
  2. ΞϓϦͷىಈ = Linuxϓϩηεͷىಈ શͯͷλεΫ͸ϝΠϯεϨου(UIεϨου)Ͱ࣮ߦ UI Drawing LameWork App Events UI

    Drawing UI Drawing Main Thread(UI Thread) PROCESS AndroidΞϓϦͷ࣮ߦϓϩηε ࢀߟ IUUQTXXXZPVUVCFDPNXBUDI W)92IVRG576MJTU1-R@V8#8R:U7*S';8S#;D#@XG98
  3. NTGSBNFΛӽ͑ͯ͠·͏ →Frame͕Drop͞ΕΔ 16ms UI Drawing LameWork App Events UI Drawing

    UI Drawing Main Thread(UI Thread) PROCESS 16ms 16ms Drop Over 16ms 60FPSͷࣦഊ
  4. 1. εϨου(ҎޙϫʔΧʔεϨου)ͷੜ੒ 2. ϫʔΧʔεϨου্ͰλεΫ࣮ߦ 3. ݁ՌΛϝΠϯεϨου΁  Worker Thread Main

    Thread(UI Thread) Update some UI Prep some work Do some long work ϚϧνεϨοσΟϯά  
  5. ɾτϥόʔαϧͳϓϩηεͷͨΊίετ͕ߴ͍ ϨϯμϦϯάͷίετ ɾ7JFXͷݺͼग़͠ ɾ਌͕ࢠΛଌఆ NFBTVSF 3PPU 7JFX 7JFX 7JFX 7JFX

    7JFX 7JFX 7JFX ɾ࠶ؼత ɾSPPUͷαΠζ͕ܾఆ ɾը໘্ͷҐஔΛܾఆ MBZPVU ɾ༿ϊʔυͷҐஔ͕ܾఆ
  6. PNGѹॖͷΞϧΰϦζϜ(Indexed Format) RGBΛࢀর͢Δܗʹมߋ͢Δ ɾը૾͸ϐΫηϧ͝ͱʹRGB৘ใΛ࣋ͭ ɾ8bit(256֊ௐ) * 3 = 24bit =

    2^24 ≒ 1600ສ৭ ɾϐΫηϧ͕࣋ͭ৘ใ͸IndexͷΈ ɾΧϥʔύϨοτΛ࣋ͭ(্ݶΛઃ͚Δ)