web-dev-qa-db-ja.com

アプリの読み込み時間の予測を管理する

私は最近、アプリで実行されているタスクに基づいてロード時間の予想をベンチマークするフレームワークを考え出すように求められました。

アプリケーションが時間をどのように使用するかを定義できる3つのカテゴリがあることを発見しました(仮に名前が付けられた関数、タスク、プロセス、これに関する標準的な用語を知っている人はいますか?):

  • A:(機能)タスクの実行中にユーザーにフィードバック(プログレスバーやマウスを使用できないなど)を必要としないアプリケーションの「ビジー」時間。たとえば、フィールドに値を保存する(それほど時間はかかりません)。 「インスタント」操作。

  • B(タスク)ビジーカーソル、プログレスバー、思考バーなど、ユーザーへのステータスフィードバックを必要とするアプリケーションの「ビジー」時間。

  • C(プロセス)は、プロセスが発生している間アプリケーションを無効にし、ユーザーがデバイスの前に座っているよりも長くかかる「ビジー」時間です。たとえば、巨大なデータベースを一晩同期するようなものです。

以下の画像は、前者を時間の観点から説明し、予想される完了時間と開発者のベストケースシナリオの期待値の観点からパフォーマンステストシナリオを分類するのに役立ちます。

Managing Apps Loading Time Expectations

アプリケーションの動作を許可する方法を標準化するためにこれを思いつきました(私はそれについて何も見つけられなかったため)a)ロードを管理する方法について誰かがより良いアイデアを持っているかどうか疑問に思っていました-時間の予想、または読み込み時間を非機能要件として分類する方法、または誰かが何かを欠けていると思っている場合

そこに記載されている値は任意であり、マークは正確ではありませんが、パターンはそうであり、興味深いと思います。

b)アプリケーション内の特定の操作にかかる時間を測定し、そこから特定の名前またはフィードバックタイプで分類する方が良いでしょうか? (もしそうなら、どうすればアプリケーションのパフォーマンスをさらにプッシュできますか?)

5
edgarator

まだ数値を詳しく把握していませんが、関数を測定/識別するために上記で使用したフレームワークは非常に細かすぎると思います。

読み込み時間の予測は、視覚的なフィードバックを使用してその場で管理できます。

以下の画像は、3つの異なるフィードバックオプションに分かれています。常に、ポインターと、ステータスバーまたは進行状況バーのいずれかが表示されます(進行状況バーとステータスバーは一緒に表示されません)。

フィードバックは、操作の実行方法にも依存します。背景または前景。

Visual Feedback vs. Time-to-Completion Matrix


参照:

1
edgarator

操作の時間の測定については、デバッグの部分で、または開発の段階でも、ボトルネックを見つけて修正する必要があります。ミリ秒に焦点を当てないでください。深く掘り下げる必要はありませんが、サイクルがある可能性のある部分、長時間アイドル状態になっているプロセス、または情報を処理しすぎて軽量化できる部分を確認してください。

開発段階でこれらの指標が得られたら、アプリがどれほどうまく機能しているかを感じ始め、次に類似の指標と比較してベンチマークを比較します。アプリに競合他社または類似の競合がない場合は、類似の情報または類似の情報を大量に処理するもの(処理された情報)がないかどうかを確認します。

グラフがユーザー向けの場合、情報は興味深く有用であることを覚えておいてください。たとえば、何かが長すぎて話している場合、接続速度が遅すぎることをユーザーに伝え、彼は電波状態の良い場所に行くべきだ。重複する情報がある場合は、そのことなどをアドバイスできます。

また、アプリから取得したログを分析し、何かが長すぎて反応しない理由を実際のデータで確認する必要があります。最良の反応は、何かにかかる時間を削減する方法を見つけることですが、時にはそれが不可能である場合もあります。最良の反応は、事実を受け入れ、操作にその時間(またはその時間)をかける必要があることをユーザーに伝えることです)。もちろん、プロセスをより小さな部分に分割してみると、ユーザーにとっては改善されたと感じるでしょう。それが可能なら。

あなたが示したグラフと分類については、私にはかなり良いようです。タスクとプロセスには、ユーザーに進行状況を常に知らせるシステムが必要であることを付け加えておきます。

1
PatomaS

これは、私が見たほとんどの最先端技術と一致しています。あなたの値は完全に正しいわけではありませんが、Aの1秒の最大値が高すぎるので、おそらく500ミリ秒程度になるはずです。理想的には、ユーザーの入力が考慮されたことをフィードバックして、ユーザーがアクションを再度トリガーしないようにすることが理想です。

BやCのような時間も余裕があるようです

待機時間が予測可能かどうかを定義する別の区別もあります。一部のアクションはある程度予測可能(ディスクに書き込む)ですが、その他のアクションは予測できません。 2つの間のフィードバックを区別する必要があります。

0
Riche Design