我一直在读到 Wp8.1 (XAML) 应用程序是为 Windows Phone 8.1 创建应用程序的新方法,并且该代码对于 Windows 8.1 桌面应用程序具有高度可重用性。
但我有点担心,因为从联系人(WP8.1 XAML 中的 ContactManager)执行单个搜索比 Silverlight 对应项慢得多。
在我的 Lumia 1520 中仅返回我的议程中的所有联系人(240 个联系人的电子邮件、缩略图等...)需要 3 秒;使用 Silverlight 代码执行相同的操作需要 0.7 秒。
我有点害怕使用 WP8.1 制作手机应用程序,因为性能对我来说非常重要。使用我的 Lumia 1520 的触点,在 Lumia 535 上进行相同的测试分别需要 7 秒和 1.5 秒。
对于使用什么样的项目有什么建议吗?我觉得 Silverlight 应用程序(显然)专注于 Windows Phone 并使用手机的所有功能。
我错了吗?我是否正在通过选择 Windows Phone Silverlight 进入弃用之路?
注意:用于执行搜索的代码来自 MSDN 示例...
WP8.1 XAML(Nokia Lumia 1520,3秒获取240个联系人缩略图,邮件账户等...)
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
最佳答案
你比较的是同一个东西吗?
在 Silverlight 版本中,您只能在完成处理程序中调用 sw.Stop。
如果你真的想做一个很好的比较,你应该得到一个 ETW 跟踪;然后你才能真正了解发生了什么。
对于基于 Metro XAML 的解决方案,可能会有额外的互操作成本。但这似乎是 future 的道路。
对于 Silverlight,现有的 API 可能会针对性能进行更完善。
也许您应该研究这两种解决方案,使可共享代码尽可能大,然后再决定采用哪种方式。
关于c# - WP SilverLight 8.1 与 WP 8.1 (XAML) 的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25603829/