WP SilverLight 8.1 против WP 8.1 (XAML) за и против
Я читал, что приложения Wp8.1 (XAML) - это новый способ создания приложений для Windows Phone 8.1, а код очень многократно используется для настольных приложений Windows 8.1.
Но я немного волновался, так как выполнение одного поиска из контактов (ContactManager в WP8.1 XAML) намного медленнее, чем аналог Silverlight.
Просто возвращение всех контактов из моей Повестки дня (240 контактов с электронными письмами, эскизами и т.д.) занимает 3 секунды в моей Lumia 1520; такая же операция с кодом Silverlight занимает 0,7 секунды.
Я немного боюсь использовать WP8.1, чтобы приложения для телефона приводили к тому, что производительность для меня очень важна. Тот же тест на Lumia 535 занимает 7 секунд и 1,5 секунды соответственно с контактами от моей Lumia 1520.
Есть ли рекомендация о том, какой проект использовать? Я чувствую, что приложения Silverlight (очевидно) сосредоточены в Windows Phone и используют все возможности телефона.
Я ошибаюсь? Могу ли я возглавить дорогу с устаревшими, выбрав серебристый телефон для Windows?
Примечание. Код, используемый для выполнения поиска, является одним из примеров 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 (Nokia 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
EDIT: Сообщение, созданное на форумах относительно этого 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
Вы сравниваете одно и то же?
В версии Silverlight вы можете вызвать вызов sw.Stop только в обработчике завершения.
Если вы действительно хотите провести хорошее сравнение, вы должны получить трассировку ETW; то вы действительно можете понять, что происходит.
Для решения на базе Metro XAML может потребоваться дополнительная стоимость взаимодействия. Но это, кажется, будущий путь.
Для Silverlight существующий API может быть более полированным для perf.
Возможно, вам следует работать над обоими решениями, сделать как можно более общий код, а затем решить, какой способ взять.