WP SilverLight 8.1与WP 8.1 (XAML)的优缺点比较

15

我一直在阅读关于使用Wp8.1(XAML)应用程序创建Windows Phone 8.1应用程序的新方法,并且该代码在Windows 8.1桌面应用程序中具有高度的可重用性。

但是,我有点担心,因为在通讯录(WP8.1 XAML中的ContactManager)中执行单个搜索比Silverlight版本慢得多。

仅从我的日程表返回所有联系人(240个带有电子邮件、缩略图等...)在我的Lumia 1520上需要3秒钟;使用Silverlight代码进行相同操作需要0.7秒。

我有些担心使用WP8.1来制作手机应用,因为性能对我来说非常重要。在Lumia 535上进行相同的测试需要分别花费7秒和1.5秒来获取来自我的Lumia 1520的联系人。

是否有任何建议关于使用哪种项目?我觉得Silverlight应用程序(显然)专注于Windows Phone并使用所有手机的功能。

我错了吗?选择Windows Phone Silverlight是否会导致不再被支持?

注:执行搜索的代码与MSDN示例中的代码相同...

WP8.1 XAML(Nokia Lumia 1520,获取带有缩略图、邮件帐户等240个联系人需要3秒钟)

ContactStore agenda = await ContactManager.RequestStoreAsync();
Stopwatch sw = new Stopwatch();
IReadOnlyList<Windows.ApplicationModel.Contacts.Contact> contacts = null;
sw.Start();
contacts = await agenda.FindContactsAsync();
sw.Stop();
txtblock1.Text = sw.ElapsedMilliseconds;

WP Silverlight 8.1(诺基亚Lumia 1520,仅需0.7秒即可获取带缩略图的240个联系人、邮件账户等...)

Contacts agenda = new Contacts();
//Stopwatch is declared at class level so its accessible in ListContacts_SearchCompleted Callback
sw.Start();
agenda.SearchCompleted+= ListContacts_SearchCompleted;
agenda.SearchAsync(String.Empty, FilterKind.None, null);
//sw.Stop() and print ElapsedMilliseconds in ListContacts_SearchCompleted callback

编辑:在论坛中创建了一个帖子,涉及到这个https://social.msdn.microsoft.com/forums/windowsdesktop/en-us/1e0accaf-b2f8-4d68-b5ec-dc6af6351633/findcontactsasync-takes-long-time?referrer=http://social.msdn.microsoft.com/forums/windowsdesktop/en-us/1e0accaf-b2f8-4d68-b5ec-dc6af6351633/findcontactsasync-takes-long-time?referrer=http://social.msdn.microsoft.com/forums/windowsdesktop/en-us/1e0accaf-b2f8-4d68-b5ec-dc6af6351633/findcontactsasync-takes-long-time?forum=wpdevelop


你是在1520上运行开发者预览版还是实际发布的版本/Cyan? - Emond
@Arys 你如何测量时间?你是在什么时候开始/停止测量的?数据是否以某种列表形式显示? - Romasz
@Romasz 我编辑了问题以展示我如何测量时间。我有循环遍历返回的联系人的代码,但是循环遍历它们所需的时间因XAML约为4ms,而Silverlight约为16ms而有所不同。 - Arys
@aiwarrior 或许这不是一个选择的问题,但我认为性能方面值得一看。 - Arys
1
@asitis 很棒的帖子伙计。我已经评论了它,并且加入了其他问题的信息... - Arys
显示剩余4条评论
1个回答

1

你是在比较同一件事吗?

在Silverlight版本中,只能在完成处理程序中调用sw.Stop。

如果你真的想进行良好的比较,应该获取ETW跟踪;然后你可以真正理解正在发生什么。

对于基于Metro XAML的解决方案,可能会有额外的Interop成本。但这似乎是未来的发展方向。

对于Silverlight,现有的API可能更加完善以提高性能。

也许你应该同时处理这两个解决方案,尽可能地制作可共享的代码,然后再决定采取哪种方式。


我正在比较相同的内容,并且在完成处理程序中停止了秒表。我已经看到了在新的操作系统版本中XAML版本性能的提升。一旦我有更多数据并再次比较性能,我会写下我的发现。 - Arys
抱歉回复晚了。我已经测试并比较了不同的Windows Phone 8.1版本,目前来看,在XAML中访问联系人的速度比Silverlight项目要慢得多。 - Arys
@Arys,你有这个话题的任何更新吗?我在获取Windows Phone 8.1 XAML应用程序中的联系人时也遇到了严重的延迟。 - asitis
@asitis 没有。微软还没有消息。可能会在Windows 10中修复...但到目前为止,我们唯一能做的就是绕过这个延迟。 - Arys
@Arys绕过延迟?这是什么意思,因为我需要获取所有联系人才能继续。 - asitis
@asitis 目前还没有。我尝试过通过每个字母从议程中提取并行获取,但在最好的情况下,它需要相同的时间。 - Arys

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接