@CSharpChatЭта группа больше не существует

Страница 82 из 1888
Летучая
03.11.2016
17:27:52
Или секрет?

Sergey
03.11.2016
17:28:14
Есть

Летучая
03.11.2016
17:29:17
Ссылкой не поделишься? :) Ну или как называется

любопытно жи

Google
Sergey
03.11.2016
17:30:30
чуть позже, я счас занят

через часок мож

Alexander
03.11.2016
17:34:36
Как раз вопрос о UWP. Есть годные ресурсы касательно оптимизации, помимо официальных источников?

Летучая
03.11.2016
17:53:49
гугл

тут зависит, что именно оптимизировать гуглил на прошлой неделе очень долго и упорото про ускорение закрузки страницы xaml, так ничего и не выгуглил

в большинстве случаев всё сводится к оптимизации логики навигации. сначала меню красишь, потом одну тяжелую часть появляешь, потом другую

в особо запущенных случаях (либо когда лень) тупо пишешь task.delay(150) и пока он ждёт, играешь анимацию уползающего меню )

ну и решает количество элементов в visual tree. <Grid><StackPanel /></Grid> хуже чем просто <StackPanel/>, например

Alexander
03.11.2016
18:01:35
Это понятное дело. Task.Delay? Зачем? Мне конкретно интересно о том, какой элемент управления как отображается, и какой расход ресурсов за собой влечет?

Летучая
03.11.2016
18:02:29
Ну тут уж надо официальные доки смотреть.

Анатолий
03.11.2016
18:02:36
Летучая
03.11.2016
18:02:47
Сколько они в каждый контрол всякой хрени полезной понапихали.

Alexander
03.11.2016
18:03:24
Я понял. Ждемс литературу

Google
Летучая
03.11.2016
18:04:00
Ну вот Pivot например. https://msdn.microsoft.com/ru-ru/library/windows/apps/mt299144.aspx Создаётся куча объектов при прогрузке элемента управления, анимаций, вижуал стейтов. И соотв-но работает оно так же НЕРАСТОРОПНО

Тут надо на исходный код каждого контрола смотреть.

Alexander
03.11.2016
18:05:59
Со скоростью проблем нет. Понятно дело, что избыточная вложенности повлечет за собой проблемы. Мне интересны расходы оперативной памяти. Адекватного профилировщика нативных ресурсов UWP приложения я не нашел

Летучая
03.11.2016
18:06:36
Это понятное дело. Task.Delay? Зачем? Мне конкретно интересно о том, какой элемент управления как отображается, и какой расход ресурсов за собой влечет?
Ну и отвечая на первый вопрос. Task.Delay используется для SplitView. При навигации на тяжелую страницу сплит меню исчезает без анимации, потому что время, которое могло бы быть затрачено на анимацию, цп тратит на подгрузку страницы. А я делаю хитрее: жду 150мс и играю анимацию в асинхронном потоке, в результате лаг почти ваще не ощущается.

Alexander
03.11.2016
18:08:07
Сомневаюсь, что это лучшее решение)

Летучая
03.11.2016
18:08:31
Со скоростью проблем нет. Понятно дело, что избыточная вложенности повлечет за собой проблемы. Мне интересны расходы оперативной памяти. Адекватного профилировщика нативных ресурсов UWP приложения я не нашел
Ууу. Тут вообще гавно у M$. Память тупо утекает. Сценарий такой: есть у тебя приложение с довольно тяжёлыми страницами, которые на экране визуализируют какой-то датасет. И есть меню, в меню 5 таких страниц. Если раз 50-70 тыкнуть на пункты меню (грузануть эти страницы), приложение отожрёт 150 мегов памяти (в теории всю доступную) и рухнет.

Как решить проблему я не нашёл. Решаю как обычно, врубаю обязательный кэш страниц: <Page NavigationCacheMode="Required" /> Здесь оно запрещает создавать новые страницы. Тогда память течь перестаёт.

Welcome Bot
03.11.2016
18:09:32
Привет fait, есть два стула... На одном винформы отточены, на другом XAMLы раскурочены. На какой сам сядешь, на какой братишку-джуниора посадишь?

Летучая
03.11.2016
18:09:52
Кстати, эта утечка воспроизводится даже в дефолтных приложениях, таких, как "Погода" или "Новости".

Можешь поиграться с тыками по меню и посмотреть на течь в диспетчере задач )

Alexander
03.11.2016
18:10:20
Это я уже понял из своего опыта) протестил dotMemory пару приложений из магазина

Летучая
03.11.2016
18:10:34
И как оно? Мусорщик тупо не трёт старые страницы?

Alexander
03.11.2016
18:10:43
Ресурсы нативные

Сборщик мусора не. Net'а собирает ресурсы

Тут бока у WinRT

Летучая
03.11.2016
18:11:30
Так вот оно что

Alexander
03.11.2016
18:12:05
Угу. Тут только доки читать

Я думал может кто-то уже собрал адекватную инфу в статье

Кстати, что занимает эту память, я так и не смог узнать. Ни один профилировщик, ни в одном режиме, не может показать, что там лежит

Летучая
03.11.2016
18:13:26
забавно

Google
Летучая
03.11.2016
18:13:37
мб это кто-то-там что-то набыдлокодил

снимает тип и болтается там куча говна, которую никто не убирает

Alexander
03.11.2016
18:14:22
Это прискорбно. Может будущие апдейты десятки поправят этот бред

Однако сборщик в WinRT таки собирает неиспользуемые компоненты, просто слишком поздно

Еще дело может быть во Frame, который при навигации хранит ссылки назад и вперед

Летучая
03.11.2016
18:15:22
а кстати. может влиять, под какой версией UWP собирать приложение?

я прост всё время собираю под 10240, чтобы максимизировать совместимость. не пробовал компилировать под 14***, например?

Alexander
03.11.2016
18:16:32
Вряд-ли, тут же проблемы во времени выполнения. Так как сборщик WinRT срабатывает даже при дальнейшем бездействии приложения

Sergey
03.11.2016
18:21:59
Уууу, кокие вы суровые UWP оптимизаторы, мне до вас далеко. Я так, ради баловства написал клиент для лепрорадио. В сторе легко ищется по "leproradio"

Есть для 8.1 со старым интерфейсом и глючное, и новое UWP, чуть менее глючное

Летучая
03.11.2016
18:22:53
супер вообще :) красота

O'Miay
03.11.2016
18:23:18
Sergey
03.11.2016
18:23:20
В принципе ничего сложного, гамбургер (чтоб все как у людей, фигле). Прослушка с бекграундворкером и жсон плейлист

Летучая
03.11.2016
18:23:51
студентам дают бесплатно

O'Miay
03.11.2016
18:24:56
Я платил за лицензию разработчика в 14 году, сейчас для стор получается актуален?

Sergey
03.11.2016
18:24:56
Все писалось абыкак, просто посмотреть как это все устроено в стор-приложениях, поэтому нет ни хорошей поддержки поворота девайса, ни оптимизации памяти и прочего стаффа.

ее сделали пожизненно валидной

O'Miay
03.11.2016
18:25:26
круто!

Google
Летучая
03.11.2016
18:26:12
пойду 5 звёзд тебе влеплю

топ

у меня вот такое https://www.microsoft.com/en-us/store/p/myfeed/9nblggh4nw02 и такое https://www.microsoft.com/en-us/store/p/mymatrix/9nblggh530bd

Alexander
03.11.2016
18:29:40
Пойдет, а у меня сейчас клиент для внутриофисной социалки, и тут без мыслей об оптимизации никуда...

Sergey
03.11.2016
18:30:20
Сча усядусь в транвай - подробее расскажу

Летучая
03.11.2016
18:34:16
недавно решил таки запелить нормальный клиент для ВК фор виндовс 10. после запила списка друзей с semanticzoom таки тоже про оптимизацию думать начал :)

Sergey
03.11.2016
18:39:31
Как уже говорил, приложение пилил ради фана и освоения новых технологий. Шаринг кода по разным версиям, универсальность и квазиуниверсальность для 8.1. Вообще туда еще нужно кучу всего добавлять. Например парсинг метаданных из аудиопотока. В плане добавить расписание программ, пуш-сообщения, но чето там посоны на сервере никак не прикрутят плагин для МС-пушей.

Летучая
03.11.2016
18:39:58
над свою тачку брать

Admin
ERROR: S client not available

O'Miay
03.11.2016
18:40:11
Вопрос на засыпку: что такое делегат?

Летучая
03.11.2016
18:40:29
ну это кароч типа определение функции

в которую можно напихать кучу других функций

O'Miay
03.11.2016
18:41:05
сигнатура?

Летучая
03.11.2016
18:41:55
типа того но я тут чуток плаваю тоже

Sergey
03.11.2016
18:42:20
А потом индус героически проебал наработки элопа и мобайл-маркет и я забил

Artem
03.11.2016
18:44:05
Делегат это не сигнатура

O'Miay
03.11.2016
18:44:23
Делегат это не сигнатура
но тесно связаны

Летучая
03.11.2016
18:44:36
уникальность делегата определяется сигнатурой же, не?

Sergey
03.11.2016
18:45:09
Кто имеет способности и желание допиливать приложение, а так же отточить свои навыки в UWP и потоковом аудиовещании - можете поучаствовать

Google
Artem
03.11.2016
18:45:38
Да, но это все равно, чо сказать, что указатель на функцию в c++ - это сигнатура

Летучая
03.11.2016
18:45:56
Ты прав

А каким образом например мы присасываемся к делегату?

ну типа принцип работы эвент хэндлеров

Artem
03.11.2016
18:47:10
В смысле присасываемся?

Летучая
03.11.2016
18:47:19
+= -=

O'Miay
03.11.2016
18:47:24
class Program { delegate void GetMessage(); // 1. Объявляем делегат static void Main(string[] args) { GetMessage del; // 2. Создаем переменную делегата if (DateTime.Now.Hour < 12) { del = GoodMorning; // 3. Присваиваем этой переменной адрес метода } else { del = GoodEvening; } del.Invoke(); // 4. Вызываем метод Console.ReadLine(); } private static void GoodMorning() { Console.WriteLine("Good Morning"); } private static void GoodEvening() { Console.WriteLine("Good Evening"); } }

Artem
03.11.2016
18:48:13
А что тебя интересует? Как там внутри? Хз, какой-нибудь список методов

Alexander
03.11.2016
18:48:17
+= и -= это всего лишь удобный синтаксис

там все круче, чем список методов

там цепочка делегатов

см MulticastDelegate

O'Miay
03.11.2016
18:49:07
Не путайте события с дилигатами

Оно очень схоже, но не то

Alexander
03.11.2016
18:49:30
События - это условно безопасный синтаксис для обертки делегата

Artem
03.11.2016
18:49:30
Это не очень важно

Alexander
03.11.2016
18:49:45
Лол

Летучая
03.11.2016
18:50:01
а делегат — эт просто типизация функции, выходит?

Artem
03.11.2016
18:50:04
Я про цепочку итд

Alexander
03.11.2016
18:50:21
Это важно ровно так же, как и знать как CLR устроена

Страница 82 из 1888

Эта группа больше не существует Эта группа больше не существует