2014-09-01 40 views
15

我一直在阅读Wp8.1(XAML)应用程序是为Windows Phone 8.1创建应用程序的新方法,并且该代码对于Windows 8.1桌面应用程序具有高度可重用性。WP SilverLight 8.1 vs WP 8.1(XAML)优点和缺点

但是我有点担心,因为从联系人(WP8.1 XAML中的联系人管理器)执行单个搜索比Silverlight对手慢。

从我的议程(240个联系人,电子邮件,缩略图等等)中恢复所有联系人需要3秒钟,我的Lumia 1520; Silverlight代码的相同操作需要0.7秒。

我有点害怕使用WP8.1来制作手机应用程序,因为这对我来说性能非常重要。 Lumia 535的相同测试分别需要7秒和1.5秒的时间,使用我的Lumia 1520的触点。

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

我错了?我是否通过选择windows phone silverlight进入弃用道路?

注:用于执行搜索的代码是从MSDN的例子之一...

WP8.1 XAML(诺基亚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 

编辑:在论坛上创建此帖的帖子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

+0

您是在1520上运行Developer Preview还是实际发布的版本/ Cyan? – 2014-09-01 10:38:00

+0

发布版本。事情是,在我尝试过的所有设备中,代码似乎需要4倍的时间才能返回与Silverlight相同的查询。 – Arys 2014-09-01 11:06:34

+0

@Arys你如何衡量时间?当你开始/停止测量?数据是否显示在某种列表中? – Romasz 2014-09-01 11:29:40

回答

1

你比较相同的东西吗?

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

如果你真的想做一个好的比较,你应该得到一个ETW跟踪;那么你可以真正明白发生了什么。

对于基于Metro XAML的解决方案,可能会存在额外的互操作成本。但那似乎是未来的道路。

对于Silverlight,现有的API可能会更加精细的perf。

也许你应该在两个解决方案上工作,尽可能地使可分享的代码,然后决定采取哪种方式。

+0

我在比较相同,并且是在完成处理程序中停止秒表。我发现使用较新的操作系统版本可以提高XAML版本的性能。一旦我有更多的数据并再次比较表现,会写出研究结果。 – Arys 2014-09-29 10:30:58

+0

对不起,延迟回复。我已经使用不同的Windows Phone 8.1版本进行了测试和比较,目前,在XAML中访问联系人的速度比Silverlight项目慢。 – Arys 2014-10-30 17:33:09

+0

@Arys你有这个话题的任何更新?在windows phone 8.1 xaml应用程序中获取联系人时,我也面临严重的延迟。 – asitis 2014-12-22 06:55:17