(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-09
(54)【発明の名称】アプリケーションのロード時間を分析するためのシステムおよび方法
(51)【国際特許分類】
G06F 11/34 20060101AFI20221202BHJP
【FI】
G06F11/34 176
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021502548
(86)(22)【出願日】2020-09-04
(85)【翻訳文提出日】2021-04-23
(86)【国際出願番号】 IB2020058283
(87)【国際公開番号】W WO2022049411
(87)【国際公開日】2022-03-10
(32)【優先日】2020-09-02
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】520244544
【氏名又は名称】クーパン コーポレイション
(74)【代理人】
【識別番号】230104019
【氏名又は名称】大野 聖二
(74)【代理人】
【識別番号】100131451
【氏名又は名称】津田 理
(74)【代理人】
【識別番号】100167933
【氏名又は名称】松野 知紘
(74)【代理人】
【識別番号】100174137
【氏名又は名称】酒谷 誠一
(74)【代理人】
【識別番号】100184181
【氏名又は名称】野本 裕史
(72)【発明者】
【氏名】ファン,ス ファン
(72)【発明者】
【氏名】キム,サン リュル
(72)【発明者】
【氏名】ハン,ホ
(72)【発明者】
【氏名】パク,ジョン ス
(72)【発明者】
【氏名】ハン,ビョン ホ
(72)【発明者】
【氏名】パク,チュン クォン
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042JJ29
5B042KK11
5B042MA08
5B042MA09
5B042MC34
5B042MC40
(57)【要約】
ユーザデバイス内のアプリケーションによるロード時間を決定するためのコンピュータ実装システムは、命令を記憶するメモリと、プロセスを実施するために命令を実行するように構成された少なくとも1つのプロセッサとを含むことができる。このプロセスは、第1のトリガイベントを検出することと、第1のトリガイベントの検出に応答して第1のアプリケーションによるロードの第1の開始時点を決定することとを含むことができる。このプロセスはまた、第2のトリガイベントを検出することと、第2のトリガイベントの検出に応答して第1のアプリケーションによるロードの第1の終了時点を決定することとを含むこともできる。このプロセスは、ネットワークを介して、第1の開始時点および第1の終了時点を含む第1のログをサーバに送信することをさらに含むことができる。
【特許請求の範囲】
【請求項1】
ユーザデバイス内のアプリケーションによるロード時間を決定するためのコンピュータ実装システムであって、
命令を記憶するメモリと、
プロセスを実施するために前記命令を実行するように構成された少なくとも1つのプロセッサと
を備え、前記プロセスは、
第1のトリガイベントを検出することと、
前記第1のトリガイベントの検出に応答して第1のアプリケーションによるロードの第1の開始時点を決定することと
第2のトリガイベントを検出することと、
前記第2のトリガイベントの検出に応答して前記第1のアプリケーションによる前記ロードの第1の終了時点を決定することと、
ネットワークを介して、前記第1の開始時点および前記第1の終了時点を含む第1のログをサーバに送信することと
を含む、システム。
【請求項2】
前記プロセスは、
第2のアプリケーションによるロードの第2の開始時点を決定することと、
前記第2のアプリケーションによるロードの第2の終了時点を決定することと、
前記ネットワークを介して、前記第2の開始時点および前記第2の終了時点を含む第2のログを前記サーバに送信することと
を含む、請求項1に記載のシステム。
【請求項3】
前記第1の開始時点は、前記第1のアプリケーションによる第1のページのロードの第2の開始時点を含み、
前記第1の終了時点は、前記第1のアプリケーションによる前記第1のページのロードの第2の終了時点を含み、
前記プロセスは、前記第1のアプリケーションによる第2のページのロードの第3の開始時点を決定することと、
前記第1のアプリケーションによる前記第2のページのロードの第3の終了時点を決定することと
を含み、前記第1のログは、前記第3の開始時点および前記第3の終了時点をさらに含む、
請求項1に記載のシステム。
【請求項4】
前記第2のページのロードの前記第3の開始時点を決定することは、前記第1のページをロードした後に前記第2のページを自動的に開くことを含む、請求項3に記載のシステム。
【請求項5】
前記プロセスは、前記第1のトリガイベントおよび前記第2のトリガイベントを指定する複数の規則にアクセスすることをさらに含む、請求項1に記載のシステム。
【請求項6】
前記複数の規則にアクセスすることは、前記サーバから前記複数の規則を受信することを含む、請求項5に記載のシステム。
【請求項7】
前記ロード時間は、ネットワーク時間、解析時間、ディスパッチ時間、バインディング時間、または1つもしくは複数の画像のロード時間のうちの少なくとも1つを含む、請求項1に記載のシステム。
【請求項8】
前記第1のトリガイベントは、前記ユーザデバイスに関連付けられたユーザによる入力である、請求項1に記載のシステム。
【請求項9】
前記第1のトリガイベントは、前記第1のアプリケーションの起動ロジックの呼び出しである、請求項1に記載のシステム。
【請求項10】
前記第2のトリガイベントは、ウェブページまたはアプリケーションページのロードが完了したことである、請求項1に記載のシステム。
【請求項11】
前記第2のトリガイベントは、画像のロードが完了したことである、請求項1に記載のシステム。
【請求項12】
前記第2のトリガイベントは、ページの所定の部分のロードが完了したことである、請求項1に記載のシステム。
【請求項13】
アプリケーションによるロード時間を決定するためのコンピュータ実装システムであって、
命令を記憶するメモリと、
プロセスを実施するために前記命令を実行するように構成された少なくとも1つのプロセッサと
を備え、前記プロセスは、
ネットワークを介してユーザデバイスから、第1のアプリケーションによる第1のページのロードの第1の開始時点、および、前記第1のアプリケーションによる前記第1のページの前記ロードの第1の終了時点を含む第1のログを受信することであり、
前記第1の開始時点は、前記ユーザデバイスによって検出される第1のトリガイベントに応答して決定され、
前記第1の終了時点は、前記ユーザデバイスによって検出される第2のトリガイベントに応答して決定される、受信することと、
前記第1の開始時点および前記第1の終了時点に基づいて第1のロード時間を決定することと、
前記第1のロード時間を、第2のアプリケーションによる前記第1のページの参照ロード時間と比較することと、
前記比較に基づいて前記第1のアプリケーションのロード効率を示すレポートを生成することと
を含む、システム。
【請求項14】
前記プロセスは、
前記第1のロード時間および前記参照ロード時間に基づいてレポートを生成することをさらに含む、請求項13に記載のシステム。
【請求項15】
前記プロセスは、
前記ユーザデバイスから、第2のアプリケーションによる前記第1のページのロードの第2の開始時点および前記第2のアプリケーションによる前記第1のページの前記ロードの第2の終了時点を含む第2のログを受信することと、
前記第2の開始時点および前記第2の終了時点に基づいて前記参照ロード時間を決定することと
を含む、請求項14に記載のシステム。
【請求項16】
前記プロセスは、
複数のユーザデバイスの各々から、前記第1のアプリケーションによる前記第1のページのロードの開始時点および前記第1のアプリケーションによる前記第1のページのロードの終了時点を含む第1のログを受信することと、
前記複数のユーザデバイスの各々から、第2のアプリケーションによる前記第1のページのロードの開始時点および前記第2のアプリケーションによる前記第1のページのロードの終了時点を含む第2のログを受信することと、
前記第1のログおよび前記第2のログに基づいてレポートを生成することと
を含む、請求項13に記載のシステム。
【請求項17】
前記複数のユーザデバイスが同じハードウェア構成を有する、請求項16に記載のシステム。
【請求項18】
前記プロセスは、
前記ユーザデバイスから、前記第1のアプリケーションによる第2のページのロードの第2の開始時点および前記第1のアプリケーションによる前記第2のページの前記ロードの第2の終了時点を含む第2のログを受信することと、
前記第1のログおよび前記第2のログに基づいてレポートを生成することと
をさらに含む、請求項13に記載のシステム。
【請求項19】
前記プロセスは、
複数のユーザデバイスの各々から、前記第1のアプリケーションによる前記第1のページのロードの開始時点および前記第1のアプリケーションによる前記第1のページのロードの終了時点を含む第1のログを受信することと、
前記複数のユーザデバイスの各々から、第2のアプリケーションによる第2のページのロードの開始時点および前記第2のアプリケーションによる前記第1のページのロードの終了時点を含む第2のログを受信することと、
前記第1のログおよび前記第2のログに基づいてレポートを生成することと
を含む、請求項13に記載のシステム。
【請求項20】
命令を含む非一時的コンピュータ可読媒体であって、前記命令は、少なくとも1つのプロセッサによって実行されると、システムにプロセスを実施させるように構成されており、前記プロセスは、
第1のトリガイベントを検出することと、
前記第1のトリガイベントの検出に応答して第1のアプリケーションによるロードの第1の開始時点を決定することと、
第2のトリガイベントを検出することと、
前記第2のトリガイベントの検出に応答して前記第1のアプリケーションによる前記ロードの第1の終了時点を決定することと、
第3のトリガイベントを検出することと、
前記第1のトリガイベントの検出に応答して第2のアプリケーションによるロードの第2の開始時点を決定することと、
第4のトリガイベントを検出することと、
前記第4のトリガイベントの検出に応答して前記第2のアプリケーションによる前記ロードの第2の終了時点を決定することと、
ネットワークを介して、前記第1の開始時点、前記第1の終了時点、前記第2の開始時点、および前記第2の終了時点を含むログをサーバに送信することと
を含む、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
[1] 本開示は、一般に、ソフトウェアアプリケーションの性能を評価するためのコンピュータ化されたシステムおよび方法に関する。特に、本開示の実施形態は、アプリケーションのロード時間を自動的に決定し、ロード時間に基づいて性能を評価することに関する。
【背景技術】
【0002】
[2] コンピュータ、ラップトップ、スマートフォン、タブレットパーソナルコンピュータ、およびウェアラブルデバイスなどの電子デバイスは、今やソフトウェアアプリケーションのプラットフォームとしてますます一般的になっている。アプリケーションの開発者および発行者は、アプリケーションのテストおよび展開において重大な課題に直面している。例えば、ハードウェア構成、ソフトウェア構成、オペレーティングシステム、またはそれらの組み合わせが異なるデバイスが数千とは言わないまでも数百あると考えると、特定のアプリケーション(またはアプリケーションの特定のバージョン)の性能を評価するのは困難である場合がある。シミュレートされたロードの下のテスト環境において数十のデバイスにおいてアプリケーションを手動でテストすると、データが非常に制限される可能性があり、これらのテストで示された良好な結果が他のデバイスの大部分で再現されない可能性があるため、厳しい制限が生じる可能性がある。
【0003】
[3] そこで、アプリケーションの読み込み速度および性能を自動的にテストするためのシステムおよび方法を設計することが望ましい場合がある。直感的な方法でテスト結果を提示することも、開発者にとって有益である場合がある。
【発明の概要】
【0004】
[4] 本開示の一態様では、ユーザデバイス内のアプリケーションによるロード時間を決定するためのコンピュータ実装システムが提供される。システムは、命令を記憶するメモリと、プロセスを実施するために命令を実行するように構成された少なくとも1つのプロセッサとを含むことができる。このプロセスは、第1のトリガイベントを検出することと、第1のトリガイベントの検出に応答して第1のアプリケーションによるロードの第1の開始時点を決定することとを含むことができる。このプロセスはまた、第2のトリガイベントを検出することと、第2のトリガイベントの検出に応答して第1のアプリケーションによるロードの第1の終了時点を決定することとを含むこともできる。このプロセスは、ネットワークを介して、第1の開始時点および第1の終了時点を含む第1のログをサーバに送信することをさらに含むことができる。
【0005】
[5] いくつかの実施形態では、プロセスはまた、第2のアプリケーションによるロードの第2の開始時点を決定することと、第2のアプリケーションによるロードの第2の終了時点を決定することと、ネットワークを介して、第2の開始時点および第2の終了時点を含む第2のログをサーバに送信することとを含むこともできる。いくつかの実施形態では、プロセスは、第2のアプリケーションによるロードの第2の開始時点を決定することと、第2のアプリケーションによるロードの第2の終了時点を決定することと、ネットワークを介して、第2の開始時点および第2の終了時点を含む第2のログをサーバに送信することとを含むことができる。
【0006】
[6] いくつかの実施形態では、第1の開始時点は、第1のアプリケーションによる第1のページのロードの第2の開始時点を含むことができ、第1の終了時点は、第1のアプリケーションによる第1のページのロードの第2の終了時点を含むことができる。このプロセスはまた、第1のアプリケーションによる第2のページのロードの第3の開始時点を決定することと、第1のアプリケーションによる第2のページのロードの第3の終了時点を決定することとを含むこともできる。第1のログは、第3の開始時点および第3の終了時点をさらに含むことができる。
【0007】
[7] いくつかの実施形態では、第2のページのロードの第3の開始時点を決定することは、第1のページをロードした後に第2のページを自動的に開くことを含むことができる。いくつかの実施形態では、プロセスはまた、第1のトリガイベントおよび第2のトリガイベントを指定する複数の規則にアクセスすることを含むこともできる。いくつかの実施形態では、複数の規則にアクセスすることは、サーバから複数の規則を受信することを含むことができる。いくつかの実施形態では、ロード時間は、ネットワーク時間、解析時間、ディスパッチ時間、バインディング時間、または1つもしくは複数の画像のロード時間のうちの少なくとも1つを含むことができる。いくつかの実施形態では、第1のトリガイベントは、ユーザデバイスに関連付けられたユーザによる入力を含むことができる。いくつかの実施形態では、第1のトリガイベントは、第1のアプリケーションの起動ロジックの呼び出しを含むことができる。いくつかの実施形態では、第2のトリガイベントは、ウェブページまたはアプリケーションページのロードが完了したことであり得る。いくつかの実施形態では、第2のトリガイベントは、画像のロードが完了したことであり得る。いくつかの実施形態では、第2のトリガイベントは、ページの所定の部分のロードが完了したことを含むことができる。
【0008】
[8] 本開示の別の態様では、アプリケーションによるロード時間を決定するためのコンピュータ実装システムは、命令を記憶するメモリと、プロセスを実施するために命令を実行するように構成された少なくとも1つのプロセッサとを含むことができる。このプロセスは、ネットワークを介してユーザデバイスから、第1のアプリケーションによる第1のページのロードの第1の開始時点、および、第1のアプリケーションによる第1のページのロードの第1の終了時点を含む第1のログを受信することを含むことができる。第1の開始時点は、ユーザデバイスによって検出される第1のトリガイベントに応答して決定することができ、第1の終了時点は、ユーザデバイスによって検出される第2のトリガイベントに応答して決定することができる。このプロセスはまた、第1の開始時点および第1の終了時点に基づいて第1のロード時間を決定することと、第1のロード時間を、第2のアプリケーションによる第1のページの参照ロード時間と比較することとを含むこともできる。このプロセスは、比較に基づいて第1のアプリケーションのロード効率を示すレポートを生成することをさらに含むことができる。
【0009】
[9] いくつかの実施形態では、プロセスはまた、第1のロード時間および参照ロード時間に基づいてレポートを生成することを含むこともできる。いくつかの実施形態では、プロセスは、ユーザデバイスから、第2のログを受信することを含むことができ、第2のログは、第2のアプリケーションによる第1のページのロードの第2の開始時点および第2のアプリケーションによる第1のページのロードの第2の終了時点を含むことができる。このプロセスはまた、第2の開始時点および第2の終了時点に基づいて参照ロード時間を決定することを含むこともできる。
【0010】
[10] いくつかの実施形態では、プロセスはまた、複数のユーザデバイスの各々から、第1のアプリケーションによる第1のページのロードの開始時点および第1のアプリケーションによる第1のページのロードの終了時点を含む第1のログを受信することと、複数のユーザデバイスの各々から、第2のアプリケーションによる第1のページのロードの開始時点および第2のアプリケーションによる第1のページのロードの終了時点を含む第2のログを受信することと、第1のログおよび第2のログに基づいてレポートを生成することとを含むこともできる。いくつかの実施形態では、複数のユーザデバイスは、同じハードウェア構成を有してもよい。
【0011】
[11] いくつかの実施形態では、プロセスはまた、ユーザデバイスから、第1のアプリケーションによる第2のページのロードの第2の開始時点および第1のアプリケーションによる第2のページのロードの第2の終了時点を含む第2のログを受信することと、第1のログおよび第2のログに基づいてレポートを生成することとを含むこともできる。
【0012】
[12] いくつかの実施形態では、プロセスはまた、複数のユーザデバイスの各々から、第1のアプリケーションによる第1のページのロードの開始時点および第1のアプリケーションによる第1のページのロードの終了時点を含む第1のログを受信することと、複数のユーザデバイスの各々から、第2のアプリケーションによる第2のページのロードの開始時点および第2のアプリケーションによる第1のページのロードの終了時点を含む第2のログを受信することと、第1のログおよび第2のログに基づいてレポートを生成することとを含むこともできる。
【0013】
[13] 本開示のさらに別の態様では、非一時的コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されると、システムにプロセスを実施させるように構成することができる命令を含むことができる。このプロセスは、第1のトリガイベントを検出することと、第1のトリガイベントの検出に応答して第1のアプリケーションによるロードの第1の開始時点を決定することとを含むことができる。このプロセスはまた、第2のトリガイベントを検出することと、第2のトリガイベントの検出に応答して第1のアプリケーションによるロードの第1の終了時点を決定することとを含むこともできる。このプロセスは、第3のトリガイベントを検出することと、第1のトリガイベントの検出に応答して第2のアプリケーションによるロードの第2の開始時点を決定することとを含むことができる。このプロセスはまた、第4のトリガイベントを検出することと、第4のトリガイベントの検出に応答して第2のアプリケーションによるロードの第2の終了時点を決定することとを含むこともできる。このプロセスは、ネットワークを介して、第1の開始時点、第1の終了時点、第2の開始時点、および第2の終了時点を含むログをサーバに送信することをさらに含むことができる。
【0014】
[14] 他のシステム、方法、およびコンピュータ可読媒体も、本明細書で説明される。
【図面の簡単な説明】
【0015】
【
図1】[15]
図1は、開示された実施形態と一致する、ロード時間をログ記録するための例示的なシステムを示す概略ブロック図である。
【
図2】[16]
図2は、開示された実施形態と一致する、例示的なサーバを示す概略ブロック図である。
【
図3】[17]
図3は、開示された実施形態と一致する、ユーザデバイスを示す概略ブロック図である。
【
図4A】[18]
図4Aは、開示された実施形態と一致する、例示的なロード時間を示す図である。
【
図4B】
図4Bは、開示された実施形態と一致する、例示的なロード時間を示す図である。
【
図5】[19]
図5は、開示された実施形態と一致する、ロード時間をログ記録するための例示的なプロセスを示すフローチャートである。
【
図6】[20]
図6は、開示された実施形態と一致する、ロード時間をログ記録するための例示的なプロセスを示すフローチャートである。
【
図7】[21]
図7は、開示された実施形態と一致する、ロード時間のレポートを生成するための例示的なプロセスを示すフローチャートである。
【
図8】[22]
図8は、開示された実施形態と一致する、ロード時間をログ記録するための例示的なプロセスを示すフローチャートである。
【発明を実施するための形態】
【0016】
[23] 本開示は、一般に、1つまたは複数のユーザデバイス上で実行される1つまたは複数のアプリケーションのロード時間をログ記録するための自動化されたシステムおよび方法に関する。
【0017】
[24] 以下の詳細な説明は、添付の図面を参照する。可能な限り、図面および以下の説明では、同一または類似の部分を参照するために、同一の参照番号が使用される。いくつかの例示的な実施形態が本明細書で説明されるが、修正、適応、および他の実装が可能である。例えば、置換、追加、または修正が図面に示された構成要素およびステップに行われてもよく、本明細書に記載された例示的な方法は、開示された方法にステップを置換、並べ替え、除去、または追加することによって修正されてもよい。したがって、以下の詳細な説明は、開示された実施形態および実施例に限定されない。むしろ、本発明の適切な範囲は、添付の特許請求の範囲によって定義される。
【0018】
[25]
図1は、開示された実施形態と一致する、ロード時間をログ記録するための例示的なシステム100を示す概略ブロック図である。
図1に示されるように、システム100は、サーバ110と、ユーザデバイス120(例えば、ユーザデバイス120-A、120-B、120-C、…、120-N)と、データベース130と、ネットワーク140とを含むことができる。ユーザデバイス120は、1つまたは複数のアプリケーションによるロード時間をログ記録するように構成することができる。ユーザデバイス120はまた、例えば、ネットワーク140を介して、ロード時間を含む1つまたは複数のログをサーバ110に送信するように構成することもできる。サーバ110は、ロード時間を1つまたは複数の参照時間と比較し、その比較に基づいてレポートを生成するように構成することができる。データベース130は、システム100の構成要素(例えば、サーバ110、ユーザデバイス120)の情報を記憶するように構成することができる。ネットワーク140は、システム100の構成要素間の通信を容易にするように構成することができる。
【0019】
[26] サーバ110は、1つまたは複数のユーザデバイス120から、例えば、ネットワーク140を介して、第1のアプリケーションのロード時間に関連する1つまたは複数のログを受信するように構成することができる。サーバ110はまた、受信されているログに基づいて第1のアプリケーションのロード時間を決定し、第1のアプリケーションのロード時間を参照ロード時間(例えば、第2のアプリケーションのロード時間)と比較するように構成することもできる。サーバ110は、比較に基づいて第1のアプリケーションのロード効率(または性能)を含むレポートを生成するようにさらに構成することができる。
【0020】
[27] いくつかの実施形態では、サーバ110は、本明細書に開示された機能を実施するクラウドサーバであってもよい。「クラウドサーバ」という用語は、インターネットなどのネットワークを介してサービスを提供するコンピュータプラットフォームを指す。この構成例では、サーバ110は、個々のハードウェアに対応しなくてもよい仮想マシンを使用することができる。例えば、計算および/または記憶機能は、データセンターまたは分散コンピューティング環境などのスケーラブルなリポジトリから望ましい計算/記憶パワーの適切な部分を配分することによって実施することができる。一例では、サーバ110は、コンピュータシステムと組み合わせてサーバ110を専用マシンにするカスタマイズされたハードワイヤードロジック、1つもしくは複数の特定用途向け集積回路(ASIC)もしくはフィールドプログラマブルゲートアレイ(FPGA)、ファームウェア、および/またはプログラムロジックを使用して、本明細書に記載の方法を実施することができる。
【0021】
[28] ユーザデバイス120(例えば、ユーザデバイス120A~120Nのうちの1つ)は、1つまたは複数のアプリケーションのロードの開始時点および終了時点を記録するように構成することができる。例えば、ユーザデバイス120は、第1のアプリケーションの起動ロジックの呼び出しを、第1のアプリケーションのロードの開始時点を記録するためのトリガイベントとして検出するように構成することができる。ユーザデバイス120はまた、開始時点を決定するように構成することもできる。ユーザデバイス120は、アプリケーションのロードの終了時点を記録するためのトリガイベント(例えば、アプリケーションがアプリケーションページのロードを完了した)を検出するようにさらに構成することができる。ユーザデバイス120はまた、開始時点および終了時点を含むログを生成し、そのログをサーバ110に送信するように構成することもできる。ユーザデバイス120は、生成されたログ(複数可)を、ネットワーク140を介してサーバ110にアップロードするようにさらに構成することができる。
【0022】
[29] データベース130は、システム100の構成要素(例えば、サーバ110、ユーザデバイス120)の情報およびデータを記憶することができる。いくつかの実施形態では、サーバ110およびユーザデバイス120は、データベース130にアクセスし、ネットワーク140を介してデータベース130から記憶されたデータを取得し、および/またはデータベース130にデータをアップロードするように構成することができる。いくつかの実施形態では、データベース130は、開示された実施形態と一致して、データセットおよび/または1つもしくは複数のデータセットインデックスを記憶するように構成することができる。データベース130は、クラウドベースのデータベース(例えば、Amazon Relational Database Service(RDS))またはオンプレミスデータベースを含んでもよい。データベース130は、開示された実施形態と一致して、ビュー構成データ、表現データ、データセット、モデルデータ(例えば、モデルパラメータ、トレーニング基準、性能指標など)、および/または他のデータを含んでもよい。
【0023】
[30] ネットワーク140は、公衆ネットワークまたは私的ネットワークであってもよく、例えば、限定ではなく、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、メトロポリタンエリアネットワーク、IEEE 802.11無線ネットワーク(例えば、「Wi-Fi」)、ネットワークのネットワーク(例えば、インターネット)、固定電話回線網などを含む有線または無線ネットワークを含んでもよい。ネットワーク140は、他のネットワーク(
図1には示されていない)に接続して、様々なシステム構成要素を相互に、および/または外部システムもしくはデバイスに接続することができる。いくつかの実施形態では、ネットワーク140は、安全なネットワークであり、ネットワークにアクセスするためにパスワードを必要とする場合がある。
【0024】
[31]
図2は、開示された実施形態と一致する、例示的なサーバ110を示す概略ブロック図である。
図2に示されるように、サーバ110は、プロセッサ210と、メモリ220と、I/Oシステム230と、通信インターフェース240とを含むことができる。
【0025】
[32] プロセッサ210は、本開示に記載されているサーバ110の機能を実施するように(またはサーバ110に実施させるように)構成することができる。プロセッサ210は、1つもしくは複数の専用処理ユニット、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィカルプロセッシングユニット、またはメモリ220と結合された他の様々なタイプのプロセッサもしくは処理ユニットを含むことができる。プロセッサ210は、並列プロセスを同時に実行するシングルコアまたはマルチコアプロセッサを構成することができる。例えば、プロセッサ210は、仮想処理技術によって構成されたシングルコアプロセッサであってもよい。いくつかの実施形態では、プロセッサ210は、論理プロセッサを使用して、複数のプロセスを同時に実行および制御することができる。プロセッサ210は、仮想機械技術または他の既知の技術を実装して、複数のソフトウェアプロセス、アプリケーション、プログラムなどを実行、制御、作動、操作、保存などする機能を提供することができる。別の実施形態では、プロセッサ210は、複数のプロセスを同時に実行することを可能にする並列処理機能を提供するように構成されているマルチコアプロセッサ構成(例えば、デュアルコア、クアッドコアなど)を含んでもよい。当業者は、本明細書に開示される機能を提供する他のタイプのプロセッサ構成を実装することができることを理解するであろう。開示された実施形態は、任意のタイプのプロセッサに限定されない。プロセッサ210は、メモリ220に記憶された様々な命令を実行して、以下により詳細に説明される開示された実施形態の様々な機能を実施することができる。プロセッサ210は、1つまたは複数の既知のプログラミング言語で書かれた機能を実行するように構成することができる。
【0026】
[33] メモリ220は、本明細書に開示される機能を実施するためにプロセッサ210によって実行される命令を記憶するように構成することができる。メモリ220は、単一のメモリ構成要素、または複数のメモリ構成要素であってもよい。そのようなメモリ構成要素は、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、または前述の任意の適切な組み合わせを含んでもよい。例えば、メモリ220は、任意の数のハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)などを含んでもよい。メモリ220は、開示された実施形態に関連する機能を実施するためにプロセッサ210によって使用可能な命令を記憶するように構成された1つまたは複数の記憶装置を含むことができる。メモリ220はまた、開示された実施形態と一致する、任意の数のプログラム、アプリケーション、アプリケーションプログラムインターフェース(API)、または任意の他のデータを含むこともできる。いくつかの実施形態では、メモリ220は、開示された実施形態と一致する方法を実施するために使用される1つまたは複数のプログラム(例えば、API、プロセス、モジュール、コード、スクリプト、または関数)を含むことができるプログラム106を記憶することができる。プログラム221は、1つまたは複数のプログラミング言語またはスクリプト言語で書くことができる。メモリ220はまた、データ222を維持することもでき、データ222は、ユーザアカウント、アプリケーション、ウェブページ、アプリケーションページ、特定のデバイス、モデル、通信、またはユーザインターフェース層の生成に関連する任意の他のデータに関連するデータを含むことができる。データ222は、XML、REST、SOAP、JSON、GraphQLなどを含む任意の数のフォーマットまたはプロトコルに従って、システム100の構成要素(例えば、ユーザデバイス120)間で交換することができる。
【0027】
[34]いくつかの実施形態では、メモリ220は、開示された実施形態と一致する、ロード時間を分析するための機械学習モデルであり得るモデル(図示せず)を含むことができる。例えば、サーバ110は、メモリ220に記憶されたモデルを取得し、ユーザデバイス(複数可)120から受信されているログ(複数可)(またはログ(複数可)から抽出されたデータ)をモデルに入力して、1つまたは複数のアプリケーションのロード効率を決定することができる。一例として、サーバ110は、アプリケーションによる様々なアプリケーションページのロード時間をモデルに入力することができ、モデルは、ロード時間に基づいてアプリケーションのロード効率を示すスコアを出力することができる。モデルは、限定ではないが、開示された実施形態と一致する、コンピュータソフトウェアモジュール、アルゴリズム、機械学習モデル、データモデル、統計モデル、再帰型ニューラルネットワーク(RNN)モデル、長・短期記憶(LSTM)モデル、または別のニューラルネットワークモデルのいずれか1つであってもよい。いくつかの実施形態では、モデルは、ある学習段階にあるモデルであってもよく、またはある程度(例えば、開発者、機械、または両方の組み合わせによって)訓練されていてもよい。いくつかの実施形態では、開発者は、モデルと対話して、モデルまたはモデルのパラメータ(例えば、機械によって提案される)に対する提案されている変更を承認または不承認にすることができる。この対話の後、モデルは、ユーザ相互作用および/またはマシン入力を反映するように更新することができる。
【0028】
[001] I/Oシステム230は、サーバ110のユーザからの入力を受信し、ユーザに情報を提示するように構成することができる。例えば、I/Oシステム230は、プロセッサ210によって生成されている、1つまたは複数のユーザデバイス120からのログ記録されたロード時間に関するレポートをユーザに(例えば、レポートを画面に表示することによって)提示することができる。I/Oシステム230は、入力デバイス231を含むことができ、入力デバイスは、ルータ、タッチスクリーン、キーボード、マイクロフォン、スピーカ、触覚デバイス、カメラ、ボタン、ダイヤル、スイッチ、ノブ、タッチパッド、ボタン、マイクロフォン、位置センサ、加速度計、カメラ、指紋スキャナ、網膜スキャナ、生体入力デバイス、超音波スキャナなど、またはそれらの組み合わせのうちの少なくとも1つを含んでもよい。当業者によって理解されるように、入力デバイス231は、開示された実施形態と一致する方法を実施または実施するのを支援するために、ユーザ入力を含む入力を受信することが可能である任意のデバイスであってもよい。I/Oシステム230はまた、出力デバイス232を含むことができ、出力デバイスは、データおよび情報をユーザに提供するように構成された任意のデバイスを含むことができる。出力デバイス232は、視覚ディスプレイ、LED、スピーカ、触覚フィードバックデバイス、プリンタなど、またはそれらの組み合わせを含んでもよい。
【0029】
[35] 通信インターフェース240は、ネットワーク140を介してシステム100の他の構成要素(例えば、ユーザデバイス120、データベース130)とデータを送受信するように構成することができる。例えば、通信インターフェース240は、アプリケーションによるロード時間を含むログをユーザデバイス120から受信するように構成することができる。通信インターフェース240はまた、さらなる処理のために、ログ(またはその一部)をプロセッサ210に送信することもできる。
【0030】
[36]
図3は、開示された実施形態と一致する、例示的なユーザデバイス120を示す概略ブロック図である。
図3に示されるように、ユーザデバイス120は、プロセッサ310と、メモリ320と、I/Oシステム330と、通信インターフェース340とを含むことができる。
【0031】
[37] プロセッサ310は、本開示に記載されているユーザデバイス120の機能を実施するように(またはユーザデバイス120に実施させるように)構成することができる。プロセッサ310は、1つまたは複数の専用処理ユニット、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィカルプロセッシングユニット、またはメモリ320と結合された他の様々なタイプのプロセッサもしくは処理ユニットを含むことができる。プロセッサ310は、並列プロセスを同時に実行するシングルコアまたはマルチコアプロセッサを構成することができる。例えば、プロセッサ310は、仮想処理技術によって構成されたシングルコアプロセッサであってもよい。いくつかの実施形態では、プロセッサ310は、論理プロセッサを使用して、複数のプロセスを同時に実行および制御することができる。プロセッサ310は、仮想機械技術または他の既知の技術を実装して、複数のソフトウェアプロセス、アプリケーション、プログラムなどを実行、制御、作動、操作、保存などする機能を提供することができる。別の実施形態では、プロセッサ310は、複数のプロセスを同時に実行することを可能にする並列処理機能を提供するように構成されているマルチコアプロセッサ構成(例えば、デュアルコア、クアッドコアなど)を含んでもよい。当業者は、本明細書に開示される機能を提供する他のタイプのプロセッサ構成を実装することができることを理解するであろう。開示された実施形態は、任意のタイプのプロセッサに限定されない。プロセッサ310は、メモリ320に記憶された様々な命令を実行して、以下により詳細に説明される開示された実施形態の様々な機能を実施することができる。プロセッサ310は、1つまたは複数の既知のプログラミング言語で書かれた機能を実行するように構成することができる。
【0032】
[38] メモリ320は、本明細書に開示される機能を実施するためにプロセッサ310によって実行される命令を記憶するように構成することができる。メモリ320は、単一のメモリ構成要素、または複数のメモリ構成要素であってもよい。そのようなメモリ構成要素は、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、または前述の任意の適切な組み合わせを含んでもよい。例えば、メモリ320は、任意の数のハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)などを含んでもよい。メモリ320は、開示された実施形態に関連する機能を実施するためにプロセッサ310によって使用可能な命令を記憶するように構成された1つまたは複数の記憶装置を含むことができる。メモリ320はまた、開示された実施形態と一致する、任意の数のプログラム、アプリケーション、アプリケーションプログラムインターフェース(API)、または任意の他のデータを含むこともできる。いくつかの実施形態では、メモリ320は、開示された実施形態と一致する方法を実施するために使用される1つまたは複数のプログラム(例えば、API、プロセス、モジュール、コード、スクリプト、または関数)を含むことができるプログラム106を記憶することができる。プログラム321は、1つまたは複数のプログラミング言語またはスクリプト言語で書くことができる。メモリ320はまた、データ322を維持することもでき、データ322は、ユーザアカウント、アプリケーション、ウェブページ、アプリケーションページ、特定のデバイス、モデル、通信、またはユーザインターフェース層の生成に関連する任意の他のデータに関連するデータを含むことができる。データ322は、XML、REST、SOAP、JSON、GraphQLなどを含む任意の数のフォーマットまたはプロトコルに従って、システム100の構成要素(例えば、サーバ110)間で交換することができる。
【0033】
[39] いくつかの実施形態では、メモリ320は、開示された実施形態と一致する、ロード時間を分析するための機械学習モデルであり得るモデル(図示せず)を含むことができる。例えば、ユーザデバイス120は、メモリ320に記憶されたモデルを取得し、ロード時間をモデルに入力して、1つまたは複数のアプリケーションのロード効率を決定することができる。一例として、ユーザデバイス120は、アプリケーションによる様々なアプリケーションページのロード時間をモデルに入力することができ、モデルは、ロード時間に基づいてアプリケーションのロード効率を示すスコアを出力することができる。モデルは、限定ではないが、開示された実施形態と一致する、コンピュータソフトウェアモジュール、アルゴリズム、機械学習モデル、データモデル、統計モデル、再帰型ニューラルネットワーク(RNN)モデル、長・短期記憶(LSTM)モデル、または別のニューラルネットワークモデルのいずれか1つであってもよい。いくつかの実施形態では、モデルは、ある学習段階にあるモデルであってもよく、またはある程度(例えば、開発者、機械、または両方の組み合わせによって)訓練されていてもよい。いくつかの実施形態では、開発者は、モデルと対話して、モデルまたはモデルのパラメータ(例えば、機械によって提案される)に対する提案されている変更を承認または不承認にすることができる。この対話の後、モデルは、ユーザ相互作用および/またはマシン入力を反映するように更新することができる。
【0034】
[002] I/Oシステム330は、ユーザデバイス120のユーザからの入力を受信し、ユーザに情報を提示するように構成することができる。例えば、I/Oシステム330は、アプリケーションのロードを開始するためのユーザからの入力を受信することができる。I/Oシステム330は、入力デバイス331を含むことができ、入力デバイスは、ルータ、タッチスクリーン、キーボード、マイクロフォン、スピーカ、触覚デバイス、カメラ、ボタン、ダイヤル、スイッチ、ノブ、タッチパッド、ボタン、マイクロフォン、位置センサ、加速度計、カメラ、指紋スキャナ、網膜スキャナ、生体入力デバイス、超音波スキャナなど、またはそれらの組み合わせのうちの少なくとも1つを含んでもよい。当業者によって理解されるように、入力デバイス331は、開示された実施形態と一致する方法を実施または実施するのを支援するために、ユーザ入力を含む入力を受信することが可能である任意のデバイスであってもよい。I/Oシステム330はまた、出力デバイス332を含むことができ、出力デバイスは、データおよび情報をユーザに提供するように構成された任意のデバイスを含むことができる。出力デバイス332は、視覚ディスプレイ、LED、スピーカ、触覚フィードバックデバイスなど、またはそれらの組み合わせを含んでもよい。
【0035】
[40] 通信インターフェース340は、ネットワーク140を介してシステム100の他の構成要素(例えば、サーバ110、データベース130)とデータを送受信するように構成することができる。例えば、通信インターフェース340は、アプリケーションによるロード時間を含むログをサーバ110に送信するように構成することができる。
【0036】
[41] いくつかの実施形態では、ユーザデバイス150は、加速度計、光センサ、音響センサ、赤外線センサ、運動センサ、圧電センサ、レーザセンサ、ソナーセンサ、GPSセンサ、電磁センサなどのような1つまたは複数のセンサ(図示せず)を含むことができる。
【0037】
[42] いくつかの実施形態では、少なくとも2つのユーザデバイス120が、同じハードウェアおよび/またはソフトウェア構成を有することができる。例えば、2つのユーザデバイス120が、同じプロセッサ、同じメモリ、および/または同じオペレーティングシステムを含むことができる。代替的にまたは付加的に、少なくとも2つのユーザデバイス120が、異なるハードウェアおよび/またはソフトウェア構成を有してもよい。例えば、ユーザデバイス120Aおよびユーザデバイス120Bが、同じハードウェア構成要素(例えば、同じプロセッサ)を有してもよいが、異なるオペレーティングシステム(または異なるバージョンのオペレーティングシステム)を有してもよい。例えば、ユーザデバイス120Aが、ANDROID 10上で動作してもよく、一方、ユーザデバイス120Aが、ANDROID 11(またはWINDOWSオペレーティングシステム)上で動作してもよい。
【0038】
[43] 本開示の他の箇所で説明するように、いくつかの実施形態では、サーバ110(および/またはユーザデバイス120)は、ロードの開始時点およびロードの終了時点を決定することによって、アプリケーションのロード時間を決定することができる。例えば、ユーザデバイス120は、第1のアプリケーションのロードの第1の開始時点および第1のアプリケーションのロードの第1の終了時点を含むことができる第1のログ、ならびに、第2のアプリケーションのロードの第2の開始時点および第2のアプリケーションのロードの第2の終了時点を含むことができる第2のログをサーバ110に送信することができる。当業者は、本明細書において使用される「第2のアプリケーション」が、「第1のアプリケーション」とは異なるアプリケーションであってもよく、または「第1のアプリケーション」と「同じ」アプリケーションの或るバージョンであってもよいことを理解するであろう。例えば、第1のアプリケーションはANDROIDオペレーティングシステム上で動作してもよく、第2のアプリケーションはIOSオペレーティングシステム上で動作してもよい。別の例として、第1のアプリケーションは、第2のアプリケーション(例えば、アプリAバージョン3.1)よりも前のバージョンのアプリケーション(例えば、アプリAバージョン3.0)であってもよい。
【0039】
[44] サーバ110は、第1の開始時点および第1の終了時点に基づいて(例えば、第1の終了時点から第1の開始時点を減算することによって)、第1のアプリケーションに関連する第1のロード時間を決定することができる。サーバ110はまた、第2の開始時点および第2の終了時点に基づいて(例えば、第2の終了時点から第2の開始時点を減算することによって)第2のロード時間を決定することができる。
図4Aおよび
図4Bは、開示された実施形態と一致する、例示的なロード時間を示す図である。サーバ110は、第1のアプリケーションの第1のロード時間を第2のアプリケーションの第2のロード時間と比較することができる。サーバ110はまた、第1のロード時間と第2のロード時間との比較に基づいて、第1のアプリケーションおよび第2のアプリケーションを評価することができる。例えば、サーバ110は、第1のロード時間が第2のロード時間よりも長いと決定することができる。サーバ110はまた、第2のアプリケーションのスコアよりも低い第1のロード時間のスコアを決定することができる。いくつかの実施形態では、サーバ110はまた、第1のアプリケーションの第1のロード時間(例えば、
図4Aに示される62ミリ秒)および第2のアプリケーションの第2のロード時間(例えば、
図4Aに示される55ミリ秒)をユーザに提示することもできる。代替的または付加的に、サーバ110は、ロード時間の内訳を提示することができる。例えば、ユーザデバイス120において記録されるアプリケーションのロード時間は、インフレート時間およびバンディング時間を含むことができる。サーバ110は、第1のインフレート時間および第1のバンディング時間を含む第1のアプリケーションに関連する第1のログ、ならびに第2のインフレート時間および第2のバンディング時間を含む第2のアプリケーションに関連する第2のログから受信することができる。サーバ110はまた、
図4Bに示されるように、第1のインフレート時間、第1のバンディング時間、第2のインフレート時間、および第2のバンディング時間をユーザに提示することもできる。
【0040】
[45]
図5は、開示された実施形態と一致する、1つまたは複数のアプリケーションによるロード時間をログ記録するための例示的なプロセス500を示すフローチャートである。
【0041】
[46] ステップ501において、プロセッサ310は、第1のトリガイベントを検出するように構成することができる。第1のトリガイベントは、ユーザデバイスに関連付けられたユーザによる入力を含むことができる。例えば、ユーザはアイコンをクリックして第1のアプリケーションを開くことができる。別の例として、ユーザは、アプリケーション内のアイコンまたはテキストをクリックして、ウェブページまたはアプリケーションページを開くことができる。プロセッサ310は、入力を受信し、それを第1のトリガイベントとして検出することができる。代替的または付加的に、第1のトリガイベントは、第1のアプリケーションの起動ロジックの呼び出し、第1のアプリケーションによって呼び出される関数、ウェブページもしくはアプリケーション(またはその所定の部分)のロード、1つもしくは複数の画像など、またはそれらの組み合わせを含んでもよい。例えば、プロセッサ310は、第1のトリガイベントとしてANDROID「onCreate」関数の呼び出しを検出することができる。
【0042】
[47] いくつかの実施形態では、プロセッサ310は、第1のトリガイベント(および/または後述する第2のトリガイベント)を指定する複数の規則にアクセスすることができる。プロセッサ310は、規則に基づいて第1のトリガイベントを検出することができる。規則はまた、1つまたは複数のトリガ、記録されるロード時間のタイプ(例えば、ネットワーク時間、解析時間、ディスパッチ時間、バインディング時間、もしくは1つもしくは複数の画像のロード時間など、またはそれらの組み合わせ)に関連する情報を含むこともできる。いくつかの実施形態では、プロセッサ310は、サーバ110から規則を受信することができる。
【0043】
[48] ステップ503において、プロセッサ310は、第1のトリガイベントの検出に応答して第1のアプリケーションによるロードの第1の開始時点を決定するように構成することができる。例えば、プロセッサ310は、第1のトリガイベントが第1の開始時点として検出される時点を決定することができる。代替的または付加的に、プロセッサ310は、ロード時間を記録し始めることができる。
【0044】
[49] ステップ505において、プロセッサ310は、第2のトリガイベントを検出するように構成することができる。第2のトリガイベントは、ロードが完了したことであり得る。例えば、記録されるロードは、第1のアプリケーションによるアプリケーションページのロードを含むことができる。第2のトリガイベントは、アプリケーションページのロードが完了したことであり得る。プロセッサ310は、アプリケーションページのロードが完了したことを決定し、アプリケーションページのロードの完了を第2のトリガイベントとして検出することができる。別の例として、第2のトリガイベントは、画像のロードまたはページ(例えば、ウェブページまたはアプリケーション)の所定の部分のロードが完了したことであり得る。
【0045】
[50] ステップ507において、プロセッサ310は、第2のトリガイベントの検出に応答して第1のアプリケーションによるロードの第1の終了時点を決定するように構成することができる。例えば、プロセッサ310は、第2のトリガイベントが第1の終了時点として検出される時点を決定することができる。代替的にまたは付加的に、プロセッサ310がステップ503においてロード時間の記録を開始する場合、プロセッサ310は、ロード時間の記録を停止してもよい。
【0046】
[51] いくつかの実施形態では、記録されるロード時間は、複数のサブロード時間を含むことができる。例えば、ロード時間は、ネットワーク時間、インフレート時間、解析時間、ディスパッチ時間、バインディング時間、および1つまたは複数の画像のロード時間のうちの2つ以上を含むことができる。さらなる詳細は、
図7に関連して以下に提供される。例として、プロセッサ310は、ステップ503においてインフレート時間の開始時点を決定し、ステップ507においてインフレート時間の終了時点を決定することができる(上記のように)。プロセス500は、ステップ501に進み、ステップ501~507を繰り返して、画像のロードの開始時点および画像のロードの終了時点を決定することができる。
【0047】
[52] いくつかの実施形態では、プロセッサ310はまた、ステップ501~507を繰り返すことによって、第2のアプリケーションによるロードの第2の開始時点を決定し、第2のアプリケーションによるロードの第2の終了時点を決定することもできる。例えば、プロセッサ310は、第1のアプリケーションによるアプリケーションページのロードの第1の開始時点および第1のアプリケーションによるアプリケーションページのロードの第1の終了時点を決定することができる。プロセッサ310はまた、第2のアプリケーションによる同じアプリケーションページのロードの第2の開始時点および第2のアプリケーションによるアプリケーションページのロードの第2の終了時点を決定することもできる。
【0048】
[53] いくつかの実施形態では、プロセッサ310は、アプリケーション(複数可)によるサブロードが完了したことを示すイベントをさらに検出することができ、プロセス500をステップ509に進めることができる。例えば、
図7に示されるように、プロセッサ310は、画像のロードが完了したというイベントを検出し(すなわち、プロセス700のステップ720において)、すべてのサブロード(例えば、インフレート、ネットワーキング、解析、ディスパッチ、バインディング、および画像ロード)が完了したことを決定することができる。プロセッサ310はまた、サブロードに関連するロード時間を含むログを生成することもでき、プロセス500は、ステップ509に進むことができる。
【0049】
[54]
図5を参照すると、ステップ509において、プロセッサ310は、ネットワークを介して、第1の開始時点および第1の終了時点を含む第1のログをサーバに送信するように構成することができる。例えば、プロセッサ310は、アプリケーションページのロードの第1の開始時点およびアプリケーションページのロードの第1の終了時点を含む第1のログをサーバ110に送信することができる。代替的または付加的に、第1のログは、ロードの記録された時間を含んでもよい。
【0050】
[55] いくつかの実施形態では、第1のログは、第1のアプリケーションによるアプリケーションページのロードの第1の開始時点、第1のアプリケーションによるアプリケーションページのロードの第1の終了時点、第2のアプリケーションによる同じアプリケーションページのロードの第2の開始時点、および第2のアプリケーションによるアプリケーションページのロードの第2の終了時点を含むことができる。代替的に、第1のログが、第1のアプリケーションによるアプリケーションページのロードの第1の開始時点および第1のアプリケーションによるアプリケーションページのロードの第1の終了時点を含んでもよく、第2のログが、第2のアプリケーションによる同じアプリケーションページのロードの第2の開始時点および第2のアプリケーションによるアプリケーションページのロードの第2の終了時点を含んでもよい。プロセッサ310は、第1のログおよび第2のログをサーバ110に送信することができる。
【0051】
[56] いくつかの実施形態では、第1のログは、第1のアプリケーションによる第1のページのロードの第1の開始時点、第1のアプリケーションによる第1のページのロードの第1の終了時点、第1のアプリケーションによる第2のページのロードの第2の開始時点、および第1のアプリケーションによる第2のページのロードの第2の終了時点を含むことができる。プロセッサ310は、第1のログをサーバ110に送信するように構成することができる。代替的に、第1のログが、第1のアプリケーションによる第1のページのロードの第1の開始時点および第1のアプリケーションによる第1のページのロードの第1の終了時点を含んでもよく、第2のログが、第1のアプリケーションによる第2のページのロードの第2の開始時点および第1のアプリケーションによる第2のページのロードの第2の終了時点を含んでもよい。プロセッサ310は、第1のログおよび第2のログをサーバ110に送信することができる。
【0052】
[57] いくつかの実施形態では、プロセッサ310は、第1のアプリケーションによる第1のページのロードの第1の開始時点および第1のアプリケーションによる第1のページのロードの第1の終了時点を決定することができる。プロセッサ310はまた、第1のアプリケーションによる第2のページのロードの第2の開始時点および第1のアプリケーションによる第2のページのロードの第2の終了時点を決定することもできる。
【0053】
[58]
図6は、開示された実施形態と一致する、複数のページ(例えば、ウェブページ、アプリケーションページなど)のロードの時間をログ記録するための例示的なプロセス600を示すフローチャートである。
【0054】
[59] ステップ601において、プロセッサ310は、(
図5に示されるプロセス500のステップ501と同様の)アプリケーションによる第1のページのロードに関連する第1のトリガイベントを検出することができる。例えば、プロセッサ310は、アプリケーションの起動ロジックの呼び出しを検出することができ、これは、第1のアプリケーションページのロードを示すことができる。起動ロジックの呼び出しは、プロセッサ310またはユーザからの入力によって開始することができる。
【0055】
[60] ステップ603において、プロセッサ310は、(
図5に示されるプロセス500のステップ503~507と同様に)第1のトリガイベントの検出に応答して第1のページのロードの第1のロード時間を決定することができる。例えば、プロセッサ310は、アプリケーションによる第1のページのロードの第1の開始時点およびアプリケーションによる第1のページのロードの第1の終了時点を決定することができる。
【0056】
[61] ステップ605において、プロセッサ310は、第2のページを自動的に開くか、またはアプリケーションに第2のページを開かせることができる。例えば、プロセッサ310は、アプリケーションに第2のアプリケーションページをロードさせることができる。
【0057】
[62] ステップ607において、プロセッサ310は、(
図5に示されるプロセス500のステップ503~507と同様に)第2のページのロードの第2のロード時間を決定することができる。例えば、プロセッサ310は、アプリケーションによる第2のページのロードの第2の開始時点およびアプリケーションによる第2のページのロードの第2の終了時点を決定することができる。
【0058】
[63] いくつかの実施形態では、プロセッサ310は、テストされるすべてのページがロードされるまでステップ605および607を繰り返し、本開示の他の箇所で説明されるように、これらのページに関連するロード時間を決定することができる。
【0059】
[64] プロセッサ310はまた、記録されたロード時間を含むログを生成し、そのログをサーバ110に送信することもできる。
【0060】
[65]
図7は、開示された実施形態と一致する、ロード時間をログ記録するための例示的なプロセス700を示すフローチャートである。プロセス700は、例示的なANDROID機能を使用して示されているが、当業者は、プロセス700が他の方法によって実施されてもよいことを理解するであろう。
図7に示されるように、アプリケーションによるページ(例えば、ウェブページ)のロードは、インフレート、ネットワークへのアクセス、解析、ディスパッチ、バインディング、画像ロードなどのような様々なステップを含むことができる。アプリケーションは、例えば、onAttach関数およびonCreate関数の呼び出しを含む、関数のリボークによってロードを開始することができる。アプリケーションによるリボークは、ステップ711においてロード時間をログ記録するためのトリガとしてプロセッサ310によって検出することができる。プロセッサ310はまた、(本開示の他の箇所で説明されているように)XMLファイルの、例えばインフレートなどの、ロードまたはインフレート時間の開始時点を記録することもできる。
【0061】
[66] ステップ712において、プロセッサ310は、ビューが作成されてインフレートされたことを決定し、ビューの完了を、インフレート時間の終了時点を記録するためのトリガとして検出することができる。いくつかの実施形態では、ステップ711と712との間の期間は、インフレート時間を含むことができる。
【0062】
[67] ステップ713において、プロセッサ310は、アプリケーションによるネットワークへのアクセスをネットワークキューに追加することができ、これは、コマンドまたは関数(例えば、
図7に示されるonCreateView関数)に対応することができる。
【0063】
[68] ステップ714において、プロセッサ310は、ネットワーク時間をログ記録するためのトリガイベントを検出し、ネットワーク時間の開始時点を決定することができる。ステップ715において、プロセッサ310は、ネットワーク時間が完了したこと(すなわち、トリガイベント)を決定し、ネットワーク時間の終了時点(および、例えば、XMLファイルを解析する解析時間の開始時点)を決定することができる。
【0064】
[69] ステップ716において、プロセッサ310は、解析が完了したことを決定し、解析時間の終了時点(および、例えば、アクティビティをディスパッチするディスパッチ時間の開始時点)を決定することができる。
【0065】
[70] ステップ717において、プロセッサ310は、ディスパッチ時間が完了したことを決定し、ディスパッチ時間の終了時点(およびバインディング時間の開始時点)を決定することができる。
【0066】
[71] ステップ718において、プロセッサ310は、バインディング時間が完了したと決定することができる。
【0067】
[72] ステップ719において、プロセッサ310は、少なくとも1つの画像をロードすることを求める要求を、画像のロード時間を記録するためのトリガイベントとして検出し、画像ロード時間の開始時点を決定することができる。
【0068】
[73] ステップ720において、プロセッサ310は、画像がロードされたことを決定し、画像ロード時間の終了時点を決定することができる。
【0069】
[74] ステップ721において、プロセッサ310は、前のステップにおいて決定された時間を収集し、収集された時間を分析することができる。例えば、プロセッサ310は、インフレート時間、ネットワーク時間、解析時間、ディスパッチ時間、バインディング時間、および画像ロード時間のうちの少なくとも1つを決定することができる。プロセッサ310はまた、記録された時間(および/または決定されたロード時間)を含むログを生成することもできる。
【0070】
[75] ステップ722において、プロセッサ310は、本開示の他の箇所で説明されるように、ログをサーバ110に送信することができる。
【0071】
[76] 当業者は、プロセス700の1つまたは複数のステップが省略されてもよいことを理解するであろう。例えば、ロード中に画像が要求されない場合、ステップ719および720は省略されてもよい。
【0072】
[77]
図8は、開示された実施形態と一致する、ロード時間のレポートを生成するための例示的なプロセスを示すフローチャートである。ステップ801において、サーバ110は(例えば、プロセッサ210を通じて)、ネットワーク140を介してユーザデバイス120から、本開示の他の箇所で説明されるように生成された第1のログ(または他の例示的なログ)を受信するように構成することができる。例えば、第1のログは、上記のプロセス500に基づいてユーザデバイス120によって生成することができる、第1のアプリケーションによる第1のページのロードの第1の開始時点(ユーザデバイス120によって検出される第1のトリガイベントに応答して決定することができる)および第1のアプリケーションによる第1のページのロードの第1の終了時点(ユーザデバイス120によって検出される第1のトリガイベントに応答して決定することができる)を含むことができる。プロセッサ210は、ユーザデバイス120から第1のログを受信することができる。
【0073】
[78] ステップ803において、プロセッサ210は、第1の開始時点および第1の終了時点に基づいて第1のロード時間を決定するように構成することができる。例えば、プロセッサ210は、第1の終了時点から第1の開始時点を減算することによって、第1のロード時間を決定することができる。いくつかの実施形態では、第1のログは、第1のロード時間(ユーザデバイス120によって生成することができる)を含むことができ、プロセッサ210は、第1のログから第1のロード時間を取得することができる。
【0074】
[79] ステップ805において、プロセッサ210は、第1のロード時間を、第2のアプリケーションによる第1のページの参照ロード時間と比較するように構成することができる。例えば、プロセッサ210は、メモリ220またはデータベース130から第2のアプリケーションによる第1のページの参照ロード時間を取得し、第1のロード時間を参照ロード時間と比較することができる。
【0075】
[80] いくつかの実施形態では、参照ロード時間は、第1のログを生成するユーザデバイス120におけるアプリケーションによる第1のページのロードに関連する記録された時点に基づいて決定することができる。例えば、ユーザデバイス120はまた、第2のアプリケーションによる第1のページのロードの第2の開始時点および第2のアプリケーションによる第1のページのロードの第2の終了時点を含む第2のログを決定することもできる。サーバ110は、ユーザデバイス120から第2のログを受信し、第2の開始時点および第2の終了時点に基づいて参照ロード時間を決定することができる。
【0076】
[81] いくつかの実施形態では、参照ロード時間は、(例えば、平均ロード時間を参照ロード時間として決定することによって)複数のユーザデバイス120からのデータに従って決定されたロード時間に基づいて決定することができる。
【0077】
[82] ステップ807において、プロセッサ210は、比較に基づいて第1のアプリケーション(および/または第2のアプリケーション)のロード効率(または性能)を示すレポートを生成するように構成することができる。例えば、プロセッサ210は、第1のロード時間が参照ロード時間よりも短いと決定することができる。プロセッサ210はまた、より高いロード効率を示すスコアを第1のアプリケーションに割り当てる(および/またはより低いロード効率を示すスコアを第2のアプリケーションに割り当てる)ことができる。プロセッサ210はさらに、アプリケーションの決定されたスコアを含むレポートを生成することができる。いくつかの実施形態では、レポートはまた、第1のアプリケーション、第1のロード時間、ユーザデバイス120、第1のページ、第2のアプリケーション、参照ロード時間などに関連する情報などの他の情報を含むこともできる。いくつかの実施形態では、プロセッサ210は、生成されたレポートをサーバ110のユーザに(例えば、情報をディスプレイに表示することによって)提示することができる。いくつかの実施形態では、第1のアプリケーションと第2のアプリケーションと間のロード時間の差(例えば、第1のアプリケーションのロード時間が第2のアプリケーションのロード時間より50ミリ秒長い)が閾値よりも大きい場合、プロセッサ210は、その差を示す通知を生成することができる。代替的にまたは付加的に、プロセッサ210は、レポートおよび/または展開システム内で第1のアプリケーション(および/または第2のアプリケーション)にフラグを立てることができる。
【0078】
[83] いくつかの実施形態では、プロセッサ210は、各々複数のユーザデバイス120からの第1のアプリケーションによる第1のページのロードに関連する第1のロード時間を含む第1のログを受信することができる。例えば、プロセッサ210は、複数のユーザデバイス120の各々から、第1のアプリケーションによる第1のページのロードの開始時点および第1のアプリケーションによる第1のページのロードの終了時点を含む第1のログを受信することができる。プロセッサ210はまた、受信された第1のログに基づいて平均の第1のロード時間を決定することができる。代替的にまたは付加的に、プロセッサ210は、複数のユーザデバイス120の各々から、第2のアプリケーションによる第1のページのロードの開始時点および第2のアプリケーションによる第1のページのロードの終了時点を含む第2のログを受信することができる。プロセッサ210は、受信されている第2のログに基づいて参照ロード時間を決定することができる。プロセッサ210はまた、第1のログおよび第2のログに基づいてレポート(例えば、第1のロード時間と第2のロード時間との比較を含む)を生成することもできる。
【0079】
[84] いくつかの実施形態では、プロセッサ210は、ユーザデバイス120から、第1のアプリケーションによる第2のページのロードの第2の開始時点および第1のアプリケーションによる第2のページのロードの第2の終了時点を含む第2のログを受信することができる。プロセッサ210はまた、第1のログおよび第2のログに基づいてレポート(例えば、第1のロード時間と第2のロード時間との比較を含む)を生成することもできる。
【0080】
[85] いくつかの実施形態では、プロセッサ210はまた、第1のアプリケーションと第2のアプリケーションとのロード時間の比較に基づいて、第1のアプリケーション(および/または第2のアプリケーション)の展開を決定することもできる。例えば、プロセッサ210は、第1のアプリケーションの性能が第2のアプリケーションの性能よりも良好であると決定することができる。
【0081】
[86] 本開示はその特定の実施形態を参照して示され、説明されてきたが、本開示は修正なしに、他の環境において実施することができることが理解されるのであろう。前述の説明は、例示の目的で提示されている。これは、網羅的ではなく、開示された正確な形態または実施形態に限定されない。当業者には、開示された実施形態の明細書および実施を考慮することによって、修正および適合が明らかになるのであろう。さらに、開示された実施形態の態様はメモリに記憶されるものとして記載されているが、当業者はこれらの態様が二次記憶デバイス、例えば、ハードディスクもしくはCD ROM、または他の形態のRAMもしくはROM、USB媒体、DVD、ブルーレイ、または他の光学駆動媒体などの他のタイプのコンピュータ可読媒体に記憶されてもよいことを理解するのであろう。
【0082】
[87] 記載された説明および開示された方法に基づくコンピュータプログラムは、熟練した開発者の技術の範囲内である。様々なプログラムまたはプログラムモジュールは当業者に知られている技法のいずれかを使用して作成することができ、または既存のソフトウェアに関連して設計することができる。例えば、プログラム・セクションまたはプログラムモジュールは、.Net Framework、.Net Compact Framework(およびVisual Basic、C などの関連言語)、Java、C++、Objective-C、HTML、HTML/AJAXの組み合わせ、XML、もしくはJavaアプレットを含むHTMLの中で、またはその手段によって設計することができる。
【0083】
[88] さらに、例示的な実施形態が本明細書で説明されてきたが、本開示に基づいて当業者によって理解されるように、同等の要素、修正、省略、組み合わせ(例えば、様々な実施形態にわたる態様の)、適応、および/または変更を有する任意のおよびすべての実施形態の範囲が可能である。クレームの限定はクレームに使用されている文言に広く基づいて解釈されるものとし、本明細書に記載されている例に限定されるものではなく、または出願手続中に解釈されるものとする。実施例は、非排他的であると解釈されるべきである。さらに、開示された方法のステップは、ステップを並べ替えること、および/またはステップを挿入もしくは削除することを含む、任意の方法で修正されてもよい。したがって、本明細書および実施例は単に例示的なものとみなされ、真の範囲および精神は以下の特許請求の範囲およびそれらの均等物の全範囲によって示されることが意図される。
【国際調査報告】