Weatherling雨の日が、いちばん好き

小さな雨に、どれくらいの負荷がかかる?

2026年9月28日計測 · Apple M4 Max · 内蔵ディスプレイ1台

Weatherling はウインドウの周りに動く雨を描くため、CPU、GPU、メモリを使用します。その量について質問をいただきました。計測方法、最新の結果、まだ確認できていないことを紹介します。

この Mac で有効だった標準設定の短時間計測2回の平均は、CPU 1コアの2.97〜3.75% と、 物理メモリ375〜391 MiBでした。4時間の計測では時間とともにメモリが増え、約467 MiB に達してから最後の1時間に落ち着きました。これは1台の機器、1つのビルドでの実測値であり、すべての Mac やバッテリー駆動時間を保証するものではありません。

使用した Mac とビルド

Apple M4 Max、64 GB メモリ、macOS 27.0 の MacBook Pro で計測しました。内蔵ディスプレイは3456 × 2234ピクセル、2倍スケール、報告上のリフレッシュレートは120 Hzです。AC 電源に接続し、自動輝度調整を有効にしたまま、通常のデスクトップ作業を続けました。開始時には9個のウインドウが見えていました。隔離した無操作の実験環境ではありません。

アプリは、次のコミットをもとにしたバージョン1.3(ビルド3)のローカル Release ビルドです:0ed73f4 。音声と入力トレースに関するローカル変更も加えており、テスト記録に残しています。Release ビルドは本番向けのコンパイラ最適化を使いますが、この実行ファイルが App Store の公開版と同一とは限りません。計測前にコピーを固定し、後のコード変更で対象が置き換わらないようにしました。

ベンチマークの手順

デスクトップに雨を描いているネイティブアプリを測ります。ブラウザーのアニメーションやスクリーンショット、画面外の描画テストだけでは、開いたウインドウの間で動くレイヤーの負荷全体は分かりません。一時設定を使い、ユーザーの設定を上書きせず各段階を再現します。

  1. アプリを終了した状態から開始。 システムの基準値を1分間記録してから、雨をオフにして起動。30秒待ち、3分間計測します。
  2. 標準の雨を計測。 強さ0.35、画質「自動」で30 fps、風と奥行きは固定、音と手前の粒子はオフ。2分間安定させてから10分間測ります。
  3. 強い雨を計測。 強さを最大にし、画質「なめらか」で60 fps、手前の粒子と音をオンにします。同じく2分間安定させてから10分間測ります。
  4. 3回繰り返す。 繰り返すことで、都合のよい単一の数値では見えないばらつきを確認します。最後にもう一度アプリ終了時の基準値を測ります。
  5. 標準の雨を4時間動かす。 再び安定させた後、長時間の CPU とメモリの推移、特に終盤の傾向を追います。

全工程は約5時間半です。テスト用ツールは画面を起こしたままにし、一時設定ではフルスクリーンアプリの前にも雨を表示します。これは計測条件であり、通常のスリープ動作を示すものではありません。GPU トレース、通信の観察、メモリマップの取得は、CPU とメモリの計測時間外に行います。結果を採用する前に、一時停止、予期しない終了、プロファイラーの重複がないかログを確認します。

最新の結果

2026年9月28日 · 各回の平均値の範囲(連続稼働は1回)
条件完了した計測平均 CPU 使用率平均物理メモリ
雨オフ、新規起動3回 × 3分0.23–0.82%26.0〜26.4 MiB
標準の雨、30 fps有効2回 × 10分2.97–3.75%375.0〜390.5 MiB
強い雨、60 fps3回 × 10分6.17–10.01%411.7〜419.3 MiB
標準の雨、連続稼働4時間5.64%441.5 MiB(平均)

CPU の割合は、1コアを100%として表示しています。プロセッサー全体に対する割合ではありません。メモリはグラフィックス分を含む物理フットプリントで、ほかのツールが示すことのある小さめの常駐メモリ値とは異なります。雨オフの結果は無効状態で新規起動した値で、稼働中の効果をオフにした後の残存メモリではありません。

標準設定の1回目は慎重を期して除外しました。安定待ちの終盤にアプリ別の除外ルールで雨が停止し、スクリーンショットツールの動作が計測開始に重なったためです。全段階は完了しましたが、問題のない標準設定の短時間計測は2回だけでした。強い雨の CPU 値も回ごとに大きく変わりました。デスクトップ上の作業が変わるため、その差を Weatherling だけに帰するのは困難です。

4時間動かし続ける理由

10分間では、後から蓄積するメモリ割り当てを見逃す可能性があります。連続稼働中の物理メモリは、379.9 MiB から467.1 MiB へ増加し、観測された最大値は、469.7 MiB でした。1時間ごとの平均は421.0、435.0、442.8、467.0 MiB。最後の1時間はほぼ横ばいで、近似した増加傾向は毎時約+0.1 MiB でした。

終盤の横ばいは有用な証拠ですが、メモリリークがない証明にはなりません。それ以前の増加は調査が必要です。4時間の平均 CPU 使用率は1コアの5.64%、95パーセンタイルは12.15%で、計測区間の95%がその値以下でした。連続稼働中にライフサイクルによる停止は記録されていません。オン・オフの反復、画面の再接続、スリープと復帰には別のテストが必要です。

GPU の処理と滑らかさ

別途取得した Metal System Trace では、表示コールバックは標準画質で毎秒約30回、強い雨で約60回でした。コマンドバッファーあたりの GPU 実働時間の平均/95パーセンタイルは、標準で0.307/0.758ミリ秒、強い雨で0.375/0.596ミリ秒。参考として、30 fps の1フレームは33.3ミリ秒、60 fps では16.7ミリ秒です。

各トレースは約31秒です。標準設定では50ミリ秒超のコールバック間隔が1回、強い雨では25ミリ秒超が15回ありました。これは描画間隔の参考ですが、表示遅延やフレーム落ちの正確な回数ではありません。GPU 実行時間も GPU 使用率ではありません。プロファイラー自体の負荷は、長時間の CPU・メモリ計測と分けています。

バッテリー駆動時間は?

この計測では、Weatherling によってバッテリー駆動時間が何分短くなるかは分かりません。短時間計測でシステムの電力推定値を記録し、デスクトップを合成する macOS の WindowServer も観察しました。ただし、その値にはほかのアプリや変化する作業負荷も含まれます。稼働中のシステムの値を単純に差し引いても、アプリ単体の信頼できる消費電力にはなりません。

電力記録は最初の無効状態の途中から始まり、連続稼働の早い段階で終了しました。そのため、起動前の基準値と4時間計測の大半には電力データがありません。バッテリー駆動時間を示すには、電源を抜き、輝度と作業負荷を一定にし、アプリの起動時と終了時を比較する統制されたテストが必要です。ここではまだ実施していません。

計測の信頼性を保つために

CPU 計測器は macOS のプロセスカウンターを読み、時間換算をプロセス CPU クロックで確認しています。物理メモリとディスク I/O は約2秒間隔で取得します。実行ファイルのハッシュ、バージョン、ソース状態、設定、時刻、ライフサイクルログを保存し、結果を元の計測にたどれるようにしています。今回のプロファイリングは計測時間前に終了し、保存済み設定も変わりませんでした。

短時間の通信観測は、その時間帯の記録にすぎません。通信がないスナップショットだけで、生涯通信しないことは証明できません。同様に、物理ディスクへの書き込みがゼロでも、論理的なファイル操作がゼロとは限りません。生のトレースにはほかのプロセスの情報が含まれ得るため、ローカルに保管しています。このページでは集計結果と条件を公開します。

性能が控えめな Mac、外部ディスプレイ、バッテリー駆動、低電力モード、スリープや画面切り替えの体系的な計測は今後の課題です。個々の Lings™ の負荷も今回分離していません。今後も可能な限り同じ手順を使い、機器、設定、ビルドの違いを一つの代表値に混ぜず明記します。

お使いの Mac で動作が異なる場合は、状況をお知らせください 。Mac の機種、アプリのバージョン、ディスプレイ構成、雨の設定があると、懸念を再現可能なテストにつなげられます。