AndroidでFPSを計測するための試行錯誤、三度目です。
目次
大体ではなく、プロ向けツールに何処まで迫れるか
りとらいんで多用してるfps計測方法を書き直したときにも加筆しましたが、この方法を使ってるのがほぼ私しかいないのでscrcpy+MSI Afterburnerで読み取れるfpsの値を完全には信用してないです。
「大体、この位で動いてる」っていう参考程度で出すくらいに留めてます。
root化が必要な代わりに、比較的表示の正しいfps表示ツールのGLToolsをPixel 3に導入して、どの程度fpsの値が合っているのか調べもしましたが…A54 5Gをレビューしたときに実動作とfpsが乖離したので、もういっそプロが使うツールと比較してみた方が良いと思いました。
日本だと認知度はかなり低いですが…海外ではGolden Reviewer氏、日本でもAndroPlusさんが使用している「WeTest PerfDog」を使って、プロ向けツールにscrcpy+MSI Afterburnerの値が何処まで迫れるかテストすることにしました。
WeTest PerfDogについて
WeTest PerfDogは、ゲーム大国&チートや不正の蔓延る本場中国の世界的にも(色々)有名な多国籍企業「Tencent」が提供するWeTestサービスの1つです。
Android・iOSデバイスでゲーム中のfpsやCPU・GPU使用率、バッテリー消費量など、最近のスマホレビューでようやく重要視されつつある項目を計測・分析できるツールです。
XiaomiやLenovo、miHoYoなどの大手企業も採用しているらしく、企業が発表会で出してるfpsはコレなんじゃないか説が出てます。雑に言えば企業も採用する開発者とかのガチプロ向けツールです。
計測にroot化やJailbreakは不要、PerfDog側はfpsに対して影響は0%、データの正確性及び精度が保証されると謳ってます。
50分間(30分の無料トライアル+SMS認証で20分クォーター追加)は、誰でも無料でWeTest PerfDogをトライアル可能です。
営利目的の場合は従量課金制で年間の契約が必要(おま国な日本からは支払い不可)、営利以外のメディアインフルエンサー(特にYouTuber)であれば無料版へ申し込めます。
Tencentだからなのか中国企業だからなのかは不明ですが、メールでのやり取りや対応は面倒くさいです。
pefdog-net@の方にメールしても返信がなく、Wetestのお問い合わせから連絡したらようやく無料版の案内を貰えました。

認証情報やサポート資料も必要になります。クソ面倒くさいです。

私は頭の弱いアホで、SNSとかの横の繋がりもないしやってないので、困ってとある方に聞いたところ、前はフォームがなくメールだけでのやりとりだったらしいです。審査&条件が厳しめになったっぽいです。
企業も採用するツールなので、無料で誰にでも使われたら困るんでしょうけど、個人向けの条件をもっと明確化してくれませんかね。専用フォームすらメールで送られてくるコレだし。
WeTest PerfDogが有用なツールなのに、使用者が思ってたほど増えていない原因が何となく解った気がします。
WeTest PerfDogを導入
WeTest PerfDogの公式ページから「PerfDog(iv7~)」のzipファイルをダウンロードします。

PerfDogとは別に、WeTestサービスでアカウントが必要になるので作成します。
電話番号は必須ではなくスキップできます。電話番号の認証をすると、追加で20分のクォーターが貰えます。


アカウントが作成できたら、ダウンロードしておいたPerfDogのzipファイルを任意の場所へ解凍します。

PerfDogはポータブル式のためソフトのインストール等は不要、フォルダ内のPerfDog.exeを起動すればOKです。
PerfDogを起動すると作成したアカウントへのログインと、何かWindowsセキュリティのアクセス許可が出るのでそれぞれ対応。

トップ画面はこんな感じです。

計測したいデバイスとPCを接続します。(AndroidはUSBデバックとか軽くゴニョゴニョする必要あり)
USBケーブルでの有線・Wi-Fiでの無線接続が可能で、有線はスクショ付き、無線はバッテリー消費の計測ができるみたいです。

Androidデバイスを接続すると、PerfDogアプリがインストールされるのでオーバーレイ表示を許可しておきます。

後は計測するアプリをリストから選択、デバイス側でアプリを開く or 開いた状態でPerfDogからアプリを選択すると、計測が開始されます。

PerfDog&scrcpy(scrsndcpy)でフレームレート計測テスト
テスト環境
一応書いておくと、PerfDog&scrcpy+MSI Afterburner実行環境のWindowsPCの構成は以下の通りです。
CPU | Ryzen 7 3700X |
マザーボード | B450 STEELE LEGEND(P4.20) |
メモリ | DDR4-3200 8GBx4(32GB) |
GPU | Radeon RX 6600 XT 8GB |
SSD | Samsung 980 1TB(PCIe 3.0×4) Samsung 860 EVO 1TB(SATA 3) |
OS | Windows 11 Pro(21H2) |
PerfDogの設定はデフォルトの状態です。

scrcpy(scrsndcpy)はfpsを60に制限、RivaTuner Statistics Serverは、サイズ以外はデフォルト設定です。


スマホは手持ちの中では、唯一ゲームをマトモに動かせる状況にあるAxon 10 Pro 5Gを使いました。
今回のテストでは録画した動画ファイルをカットせず、そのまま使いたかったので動画置場としてYouTubeアカウントを取得してアップロードしました。
ブログに直接置いても問題はないのですが、ページの読み込みが遅くなる可能性もあるので、3分以上の動画ファイルは今後YouTube経由に変更する予定でいます。
プロセカ
3DMV+高品質60fps、ノーツ速度12でAUTO LIVEを5回動作させたときの動作を計測しました。


PerfDogで計測した平均値は58.2fps(スムーズ度は4.2)、scrcpy+MSI Afterburnerは58fpsでした。
比較的軽めなタイトルのプロセカではSnapdragon 865だと、ほぼ59(60)fpsに張り付くため、平均値も誤差がほぼなくPerfDogと同じ結果になったのだと思います。
シーン別に見てみると



となっており、タイミングが合えば3つの値が一致しているのが確認できます。
「卵が先か鶏が先か」というように、この辺りは読み取り側のタイミング次第っぽいです。
Axon 10 Pro 5Gだけだとデータ不足なので、3DMV+高品質を60fpsで動作させるには性能が足りない玩具のPixel 3でも一応、8分程度同じ内容でテストをしたところ


PerfDogでは平均48.7fps(スムーズ度は16.1)、scrcpy+MSI Afterburnerは49fpsでした。
スムーズ度16.1でグラフを見てもらえば分かるように、Snapdragon 845では性能が足りないのでfpsが安定せず荒ぶってますが…PerfDogの値に対して、scrcpy+MSI Afterburnerでも最終的に平均値は収束して、性能の有無は関係なく測定できる値は誤差の範囲で収まるようです。
原神
最高画質60fpsで水辺や精鋭魔物の多い淵下宮を15分程度探索したときの動作を計測しました。
スマホで動作テストはするけど、大して原神に興味がなくてモンド周辺を初期面子でテキトーにうろうろするだけの人達よりは、原神ユーザー(旅人)に則したマシなデータが得られると思います。


PerfDogでは平均52.9fps(スムーズ度は5.0)、scrcpy+MSI Afterburnerは53fpsでした。
scrcpy+MSI Afterburnerでも、原神テスト時の平均fpsもPerfDogと誤差範囲の値で、大手企業も採用するガチプロ向けのPerfDogに迫る結果です。
PerfDogの値にも目を向けるとAxon 10 Pro 5Gの結果は、下手なSnapdragon 8 Gen 1搭載機より平均fpsが良い結果で、画面が一瞬止まったように見えるジャンクと呼ばれる現象も14.9と比較的少ないようです。
前に、私が原神の画質設定記事で書いた「爆熱な888や8 Gen 1より、865や870がおすすめ」って書いた部分を、今回のテスト結果である意味裏付ける形になりました。
シーン別に見てみると



59(60)fpsに張り付くプロセカとは違い、フレームレートが上下する原神ではそれぞれの値はバラバラで、ブレる頻度がより多いです。タイミングが合えば同じ値になるのは共通みたいです。
ただ、ブレる場合でも大体2~3fps程度の僅差で、大きく値が乖離することはないように見えます。
そもそも参照タイミングがバラバラなので、PerfDogの値→Afterburnerの値みたいな場合もありました。
scrcpy+MSI Afterburnerによる計測の欠点
scrcpy+MSI Afterburnerも万能ではないです。
そもそもscrcpyはAndroid画面をadbを介してPC上にミラーリングするツールであり、fps計測を主目的にしたツールじゃないです。
プロセス的に「実機の動的fps→scrcpyが実機に近い動作をミラーリング→その画面の動的fpsをMSI Afterburnerが表示」という3段階の流れを踏んでいるので、急激なfpsの低下時に反映が遅れます。
特に顕著なのは、ロード時などの0~10fps程度で動く場面で、実機のfpsよりやや高めの値(直後にfpsが上昇するため)になります。


なので、平均値が収束するとはいえ…極力ロードとかは挟まない&計測時はベンチマークモードでMSI Afterburnerの値をリセットする必要があります。


あと、実機の画面が一瞬止まるジャンク現象時にミラーリング画面側の描画更新が詰まって、いきなり実機に近いfpsに戻るので、ブレたときに60fps制限していても62とか64fpsと表示しちゃうこともあります。

結局のところ、実機に近い動作のミラーリング画面からfpsを読み取ってるだけなので、PerfDogやGLToolsのように実機の動的fpsを視てるわけじゃないです。
PerfDogやGLToolsが内側から視てるとしたら、scrcpy+MSI Afterburnerは外側からです。
あとUIやOSによってはscrcpyと相性問題が出る可能性もありますし、SoCが非力でGPU使用率が99(100)%に張り付いたり、RAMが不足していて、adb経由でミラーリングする余力がないと実動作とfpsが大きく乖離します。

予め、RivaTuner Statistics Serverのフレームレートを制限したり

GLToolsやAndroid 12のダッシュボードなどでfpsを表示し、scrcpy+MSI Afterburnerの値が実動作から乖離していないかチェックしてから計測した方が良いです。

あとがき

とりあえずscrcpy+MSI Afterburnerでの計測が、PerfDogと誤差範囲の値で、プロ向けのツールに迫る結果なのは確認できました。
これで、scrcpy+MSI Afterburnerの値が合っているかどうか聞かれた場合でも、PerfDogと誤差範囲の値だと弁明できますし、自分でもモヤモヤしないで済みます。
無理にscrcpyで計測することに拘る必要はないですが、現状PerfDogやGLToolsくらいしかマトモなfps計測ツールがなく、PerfDogは中国のTencentとやり取りが必要で中華製のツールです。
GLToolsはroot化(Magisk)が必須で、BLUできる端末に利用は限られます。
選択肢があるに越したことはないです。
それにscrcpyの計測が実用的であるなら、fpsも計測せず体感ベースで「快適にプレイ!」だの「カクつきはありませんでした」などが大半で、形骸化しつつあるスマホレビューも少しはマシになるかもしれません。
scrcpy+MSI Afterburnerであれば、導入難易度や利用のハードルは桁違いに低いです。
私以外の誰かがscrcpy+MSI Afterburnerでの計測をテストして、実用に足りるレベルだと認知されればの話ですが…ね。
WeTest PerfDogのメディアインフルエンサー向けプランに現在申請中で、Tencentからの返答待ちですが…申請が通ったら今後は、scrcpy+MSI AfterburnerやGLToolsより正確な値が必要な場合やスマホレビューでPerfDogを頼ろうと思います。
最近のコメント