Но ты ведь сам не понимаешь причины, потому что RetroBar тот же "XAML-кал" внезапно работающий на GPU, если ты только не принудительно Render Tier в 0 выставил
Процессор в простое отдыхает, потому что мы выпилили все XAML-анимации.
полноценная замена, написанная на .NET, которая эмулирует работу классического Taskbar через оригинальные API... Она не грузит GPU сложными эффектами и выглядит ровно так, как мы помним
.NET ... GPU
открываю репозиторий
вижу WPF
пять вхождений по поиску 'animation'
ехидно улыбаясь
Да чтож такое и тут XAML анимации! Что же вы так приципились демонизировать XAML. Хороший язык разметки между прочем. А по теме, не знаю как живет Windows с настройками по умолчанию на слабых машинах, но Perfomance Options на вкладке Visual Effects можно в целом отключить большинство анимаций, что значительно повышает отзывчивость стандартного шелла или убирает чувство заторможенности от этих анимаций
В Windows 10 Microsoft начала внедрять UWP и WinRT. Так между приложением и железом появился еще один слой. Но через новый стек шли только новые UWP, а старые Win32-программы продолжали работать по-старому.
Нет, они не работали по старому. GDI перестал полностью работать на CPU с Windows 7. Вводились новые компоненты DWWM, DWM, DXGI. Да и сейчас особо не скажешь, не транслирует ли Windows вызовы к GDI в вызовы для видеокарты. Microsoft на моей памяти не говорил, что реализация введенных функций всегда одна. Поведение обещали, а вот реализацию нет.
У нас с коллегой есть другая гипотеза, требующая проверки. Что Microsoft не стоило все что есть в Windows вешать на GPU. WebView? GPU. Игры? GPU. Chromium? GPU. Любое около WinRT приложение? GPU. Пуск? WebView, то есть GPU. Был боттлнек по CPU, теперь у вас боттлнек в GPU. Некоторые примитивные вещи не обязательно просчитывать на видеокарте. Даже если у вас нет видеокарты, она все равно будет эмулироваться на CPU. Это можно заметить пройдясь по девайсам DXGI. У вас всегда есть дефолтный девайс, готовый принять вызовы того же DirectX 10 и/или 11
Раньше я писал Exception'ы, выстраивал цепочки и радовался жизни, перехватывая их через самописный Middleware и оборачивая их в ProblemDetails. А затем я посмотрел сколько RPS теряю на throw new Exception("Hello world!") и мне стало максимально грустно. Терять в 10 раз RPS, только потому что обработка исключения действительно дорогое удовольствие, это очень грустно.
Сначала, я пробовал разные методики, например, которые мне встречались в PInvoke. Если null — то нету, если есть — значит есть. Отсюда и *Default() пошли. Но этого было мало. Логика росла, валидация убивала смысл жизни, а затем я пришел к такому простенькому интерфейсу, а там уже реализация, которая принимала все в себя через конструктор new InteractionResult(result/errors/exception/validationResult)
public interface IInteractionResult
{
bool Succeeded { get; }
IDictionary<string, string[]> Errors { get; }
}
public interface IInteractionResult<TResult> : IInteractionResult
where TResult : class
{
TResult Result { get; }
}
Честно подсмотренная практика у ASP.NET Core Identity. И неважно что здесь она Maybe, в комментариях выше отсыллки Either. Важно, что она решает проблемы и достаточно легко реализуемая конструкция.
Exception'ы это как уровень Error или Critical (нет) в вашем инструменте логирования. Если вы ожидаете, что пользователь может вам недодать информации — это Warning. Скажите вежливо, что вы не можете это сделать, объяснив вежливо почему. Но если произошло действительно что-то необратимое/необрабатываемое, тут уже стоит выкинуть соотвествующий Exception.
Но ты ведь сам не понимаешь причины, потому что RetroBar тот же "XAML-кал" внезапно работающий на GPU, если ты только не принудительно Render Tier в 0 выставил
А зря, одна из лучших итераций, если не трогать издания без Media Feature Pack (Издания с буквами KN или N)
открываю репозиторий
вижу WPF
пять вхождений по поиску 'animation'
ехидно улыбаясь
Да чтож такое и тут XAML анимации! Что же вы так приципились демонизировать XAML. Хороший язык разметки между прочем. А по теме, не знаю как живет Windows с настройками по умолчанию на слабых машинах, но Perfomance Options на вкладке Visual Effects можно в целом отключить большинство анимаций, что значительно повышает отзывчивость стандартного шелла или убирает чувство заторможенности от этих анимаций
Нет, они не работали по старому. GDI перестал полностью работать на CPU с Windows 7. Вводились новые компоненты DWWM, DWM, DXGI. Да и сейчас особо не скажешь, не транслирует ли Windows вызовы к GDI в вызовы для видеокарты. Microsoft на моей памяти не говорил, что реализация введенных функций всегда одна. Поведение обещали, а вот реализацию нет.
У нас с коллегой есть другая гипотеза, требующая проверки. Что Microsoft не стоило все что есть в Windows вешать на GPU. WebView? GPU. Игры? GPU. Chromium? GPU. Любое около WinRT приложение? GPU. Пуск? WebView, то есть GPU. Был боттлнек по CPU, теперь у вас боттлнек в GPU. Некоторые примитивные вещи не обязательно просчитывать на видеокарте. Даже если у вас нет видеокарты, она все равно будет эмулироваться на CPU. Это можно заметить пройдясь по девайсам DXGI. У вас всегда есть дефолтный девайс, готовый принять вызовы того же DirectX 10 и/или 11
Раньше я писал Exception'ы, выстраивал цепочки и радовался жизни, перехватывая их через самописный Middleware и оборачивая их в ProblemDetails. А затем я посмотрел сколько RPS теряю на
throw new Exception("Hello world!")и мне стало максимально грустно. Терять в 10 раз RPS, только потому что обработка исключения действительно дорогое удовольствие, это очень грустно.Сначала, я пробовал разные методики, например, которые мне встречались в PInvoke. Если null — то нету, если есть — значит есть. Отсюда и
*Default()пошли. Но этого было мало. Логика росла, валидация убивала смысл жизни, а затем я пришел к такому простенькому интерфейсу, а там уже реализация, которая принимала все в себя через конструкторnew InteractionResult(result/errors/exception/validationResult)Честно подсмотренная практика у ASP.NET Core Identity. И неважно что здесь она
Maybe, в комментариях выше отсыллкиEither. Важно, что она решает проблемы и достаточно легко реализуемая конструкция.Exception'ы это как уровень Error или Critical (нет) в вашем инструменте логирования. Если вы ожидаете, что пользователь может вам недодать информации — это Warning. Скажите вежливо, что вы не можете это сделать, объяснив вежливо почему. Но если произошло действительно что-то необратимое/необрабатываемое, тут уже стоит выкинуть соотвествующий Exception.
Ой йо. Мб лучше олимпиады навернете, вместо колледжа? Или летнюю компьютерную школу?
https://ditp.ifmo.ru/ru/page/18883/lksh.htm
Стоит вспомнить мобильную версию, которая работает стабильно и даже без «относительно оригинала». При этом практически ничего не урезав