Androidアプリのユーザーのパフォーマンスの違いをデバッグしようとしています。 DB書き込み時間とSharedPreferences読み書き時間の極端な違いを追跡しました。私のデバイス上で異なるAndroidデバイスでSharedPreferencesにアクセスする際のパフォーマンスの違いを説明してください
private void testEditor1() {
SharedPreferences settings = this.getSharedPreferences(Constants.PrefsName, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("testEditor1", true);
editor.commit();
}
private void testEditor2() {
for (int i = 0; i < 10; i++) {
SharedPreferences settings = this.getSharedPreferences(Constants.PrefsName, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("testEditor2", true);
editor.commit();
}
}
private void testEditor3() {
SharedPreferences settings = this.getSharedPreferences(Constants.PrefsName, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("testEditor3", 1);
editor.commit();
}
private void testEditor4() {
for (int i = 0; i < 10; i++) {
SharedPreferences settings = this.getSharedPreferences(Constants.PrefsName, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("testEditor4", i);
editor.commit();
}
}
private void testEditor5() {
for (int i = 0; i < 100; i++) {
SharedPreferences settings = this.getSharedPreferences(Constants.PrefsName, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("testEditor5", i);
editor.commit();
}
}
private void testEditor6() {
SharedPreferences settings = this.getSharedPreferences(Constants.PrefsName, 0);
for (int i = 0; i < 10; i++) {
SharedPreferences.Editor editor = settings.edit();
editor.putInt("testEditor6", i);
editor.commit();
}
}
private void testEditor7() {
SharedPreferences settings = this.getSharedPreferences(Constants.PrefsName, 0);
for (int i = 0; i < 100; i++) {
SharedPreferences.Editor editor = settings.edit();
editor.putInt("testEditor7", i);
editor.commit();
}
}
(オリジナルモトローラドロイド)、ここでの結果は以下のとおりです:私の同僚のオン
Test 1 (Write 1 bool): 21 ms
Test 2 (Write 10 bools): 316 ms
Test 3 (Write 1 int): 15 ms
Test 4 (Write 10 ints): 182 ms
Test 5 (Write 100 ints): 1525 ms
Test 6 (Write 10 ints 2): 108 ms
Test 7 (Write 100 ints 2): 1378 ms
ここ
は、私がSharedPreferencesの速度をテストするために書いた7つのパフォーマンステストですデバイス(HTC Evo)の結果は次のとおりです。
Test 1 (Write 1 bool): 63 ms
Test 2 (Write 10 bools): 14 ms
Test 3 (Write 1 int): 15 ms
Test 4 (Write 10 ints): 186 ms
Test 5 (Write 100 ints): 919 ms
Test 6 (Write 10 ints 2): 60 ms
Test 7 (Write 100 ints 2): 823 ms
私たちのベータ版ユーザーのデバイスでは、Saここに結果があります:
Test 1 (Write 1 bool): 1188 ms
Test 2 (Write 10 bools): 1024 ms
Test 3 (Write 1 int): 105 ms
Test 4 (Write 10 ints): 1019 ms
Test 5 (Write 100 ints): 8142 ms
Test 6 (Write 10 ints 2): 630 ms
Test 7 (Write 100 ints 2): 6610 ms
読み込みと書き込みの両方が遅いアクセス時間があります。これらの数字は、一般的にデバイス上で一貫しています。いくつかのケースで私たちのベータユーザーデバイス上のSharedPreferencesへの遅い書き込みは、私たちの起動プロセスを調べるときに、単一のブール値書き込みのために〜10秒(10000ms)かかるようです。
サムスンギャラクシーSでSharedPreferencesのパフォーマンスがそれほど遅くなる理由は誰でも推測できますか?サムスンギャラクシーSのインターネット上にはarticlesaboutthe "lag"があります。これは我々が見るSharedPreferencesの振る舞いを説明するでしょうか?もしそうなら、誰かが正確にどのように説明してくれますか?
ありがとうございます!
私の理解では、内部メモリが大幅に高速化されました。ここではハードドライブについては言及していません。私には、Samsung Galaxy Sがどうして悪化しているのか、またアプリの経験から、どのアプリがうまくいくのかは不明です。 – esilver
ハードドライブでなくても、速度を落とすことができます:)サムスンのデザインの決定には、「スマート」ストレージコントローラと組み合わせて独自のRFSファイルシステムを使用していることが原因です。オンラインで詳細を見つけることができます。アプリでできることは、すべてのI/O操作が別のスレッドで行われていることを確認し、遅れが目立たないようにすることです。 –