15
votes

I have been reading that Wp8.1 (XAML) apps are the new way of creating apps for Windows Phone 8.1, and the code is highly reusable for Windows 8.1 Desktop apps.

But im a bit worried since performing a single search from the Contacts (ContactManager in WP8.1 XAML) is way slower than the Silverlight counterpart.

Just returning all contacts from my Agenda (240 contacts with emails, thumbnails, etc...) takes 3 seconds in my Lumia 1520; the same operation with Silverlight code takes 0,7 seconds.

I am a bit afraid to use WP8.1 to makes apps for phone cause the performance is pretty important to me. The same test on a Lumia 535 takes 7 seconds and 1,5 seconds respectively with the contacts from my Lumia 1520.

Is there any recomendation on what kind of project to use? I feel Silverlight apps are (obviously) focused in Windows Phone and use all the phone's capabilities.

I am wrong? Am I heading into a deprecation road by picking windows phone silverlight?

Note: The code used to perform the search is the one from the MSDN Examples...

WP8.1 XAML (Nokia Lumia 1520, 3 seconds to get 240 contacts with thumbnails, mail accounts, etc...)

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 (Nokia Lumia 1520, 0,7 seconds to get 240 contacts with thumbnails, mail accounts, etc...)

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

EDIT: Post created in forums regarding this 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

1
Are you running the Developer Preview or the actual released version/Cyan on the 1520 ?Emond Erno
Released version. Thing is that in all the devices i have tried, the code seems to need 4x the time to return the same query than the Silverlight counterpart.Arys
@Arys How do you measure the time? When you start/stop measuring? Is the data dispalyed in some kind list?Romasz
@Romasz i edited the question to show how I measure time. I have code to loop thru the returned contacts too, but the amount of time to loop thru them varies from aprox 4ms(XAML) and 16ms(Silverlight)Arys
@asitis Great post mate. Commented it and also added info about other issue I encountered...Arys

1 Answers

1
votes

Are you comparing the same thing?

In the Silverlight version, you can only call sw.Stop in completion handler.

If you really want to do a good comparison, you should get an ETW trace; then you can really understand what's going up.

For Metro XAML based solution, there may be extra interop cost. But that seems to be the future path.

For Silverlight, existing API may be more polished for perf.

May be you should work on both solutions, make shareable code as big as possible, and later decide which way to take.