2

我正在制作一个使用大量提醒的 Windows 手机应用程序,我决定从测试 ScheduledActionService 方法(添加、删除、替换、查找)的性能开始,看看什么是最快/最简单的方法.

我开始测试,应用程序花了 1.5 秒删除 14 个提醒,然后创建新的 14 个提醒。查找/替换花费了相同的时间。这比我预期的要慢得多。该测试是在 HTC 8X 上进行的。然后我在三星 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 只是将字符串写入隔离存储中的文件。

任何想法为什么这会在速度更快的手机上运行得更慢?

编辑: HTC 8X 上的结果是一样的,无论应用程序是 WP7.1 应用程序还是 WP8 应用程序。

4

0 回答 0