私は多くのリマインダーを使用する Windows Phone アプリを作成しています。ScheduledActionService メソッド (追加、削除、置換、検索) のパフォーマンスのテストから開始して、それを実行するための最速/最も簡単な方法を確認することにしました。 .
テストを開始したところ、アプリが 14 個のリマインダーを削除してから新しい 14 個のリマインダーを作成するのに 1.5 秒かかりました。検索/置換と同じ時間がかかりました。それは私が予想したよりもずっと遅いです。このテストは HTC 8X で実行されました。次に、Samsung Omnia 7 でも同じことを行いましたが、はるかに高速でした。14 個のリマインダーの交換には約 200 ミリ秒かかりました。削除/追加は約 100 ミリ秒遅くなりました。両方のテストはデバッグなしで行われ、ランダムなものかどうかを確認するために数回実行しました。
テストのコードは次のとおりです。
public void RefreshReminders() {
var st = new System.Diagnostics.Stopwatch();
st.Start();
foreach (var reminder in ScheduledActionService.GetActions<Reminder>()) {
ScheduledActionService.Remove(reminder.Name);
}
for (int i = 0; i < 14; i++) {
string reminderName = i.ToString();
Reminder reminder = new Reminder(reminderName);
reminder.Title = "Reminder";
reminder.Content = string.Format("Some data: {0}", i);
reminder.BeginTime = DateTime.Now.AddSeconds(2000);
reminder.RecurrenceType = RecurrenceInterval.None;
ScheduledActionService.Add(reminder);
}
st.Stop();
LogToIS("Reminders replaced (remove/add) in: " + st.ElapsedMilliseconds + "ms");
st = new System.Diagnostics.Stopwatch();
st.Start();
for (int i = 0; i < 14; i++) {
string reminderName = i.ToString();
Reminder reminder = (Reminder)ScheduledActionService.Find(reminderName);
reminder.Content = string.Format("Some data: {0}", i + 5);
reminder.BeginTime = DateTime.Now.AddSeconds(2000);
ScheduledActionService.Replace(reminder);
}
st.Stop();
LogToIS("Reminders replaced (find/replace) in: " + st.ElapsedMilliseconds + "ms");
}
LogToIS は、分離ストレージ内のファイルに文字列を書き込むだけです。
はるかに高速な電話でこれが遅くなる理由は何ですか?
編集:アプリが WP7.1 アプリか WP8 アプリかに関係なく、HTC 8X での結果は同じです。