2

私は多くのリマインダーを使用する 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 での結果は同じです。

4

0 に答える 0