1

私は小さなアプリを持っています。最初の画面はログイン アクティビティです。最初のアクティビティの読み込みは比較的問題ありません (エミュレータで 2 秒)。

ログイン ボタンを押すと、System.Net.HttpWebRequest を使用してログイン ユーザー名/パスワードを検証します。これには約 12 秒かかります。デスクトップで同じ URL を 0.1 秒で呼び出します。さらに悪いことに、URL から返されるデータは json であり、デシリアライズする必要があり、さらに 10 秒かかります。

私はここでグーグルで検索し、System.Net.HttpWebRequest.Proxy の落とし穴 (検出に 7 秒) を排除しました。

デバッグを行ったところ、デバッグ ウィンドウに次のような興味深い結果が表示されました。基本的に、実行時にかなりの数のアセンブリが読み込まれていることに気付きました。

08-14 15:06:12.713 I/dalvikvm( 9180): Wrote stack traces to '/data/anr/traces.txt'
Loaded assembly: MonoDroidConstructors [External]
08-14 15:06:17.823 D/dalvikvm( 9180): GC_CONCURRENT freed 50K, 4% free 7313K/7559K, paused 11ms+3ms
Thread started: <Thread Pool> #2
Thread started: <Thread Pool> #3
**Loaded assembly**: System.dll [External]
[0:] 
[0:] 
[0:] 
start login,8/14/2013 3:06:22 PM
08-14 15:06:23.723 I/mono-stdout( 9180): 
start login,8/14/2013 3:06:22 PM
[0:] 
start login,8/14/2013 3:06:22 PM
Thread started: <Thread Pool> #4
**Loaded assembly**: Mono.Security.dll [External]
Thread started: <Thread Pool> #5
Thread started: <Thread Pool> #6
[0:] 
end login,8/14/2013 3:06:29 PM
08-14 15:06:29.933 I/mono-stdout( 9180): 
end login,8/14/2013 3:06:29 PM
[0:] 
end login,8/14/2013 3:06:29 PM
[0:] 
[0:] 
**Loaded assembly**: System.Runtime.Serialization.dll [External]
[0:] 
08-14 15:06:38.893 I/dalvikvm( 9180): threadid=3: reacting to signal 3
4

1 に答える 1

0

私はついにそれを理解します。

より良い構成で新しい AVD を作成すると、より高速になります。

ARMのパフォーマンスに関連するエミュレータでも遅いです。まったく良くありません。パフォーマンスを向上させるために x86 エミュレーターを使用できると思います。また、ハードディスクではなく SSD を使用すると、パフォーマンスの向上に役立ちます。

また、実際のデバイスと適切なネットワークの適切な設定により、プロセス全体にかかる時間は 1 秒未満です。

于 2013-08-17T02:43:37.760 に答える