Nano Hash - криптовалюты, майнинг, программирование

Проблемы с регулированием ЦП в WPF

Я работаю над приложением в WPF, используя Vlc.DotNet. У меня возникла проблема с воспроизведением видео с ужасной частотой кадров на моем ноутбуке.

После некоторых исследований я определил, что проблема связана с дросселированием процессора. Если профиль питания ноутбука находится в режиме BatterySaver, проблема возникает. Если я переключаю его на производительность, все работает нормально. Мне кажется, что в режиме BatterySaver он позволяет процессору дросселировать, и по какой-то причине не корректно увеличивает дроссель, когда это нужно приложению. Могу ли я как-нибудь исправить эту проблему?

Я попытался установить приоритет с помощью приведенного ниже кода, и, похоже, это не имело значения.

System.Diagnostics.Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High;

Vlc.DotNet обновляет и ImageSource следующим обработанным изображением. У меня есть этот источник, привязанный к изображению в графическом интерфейсе, который его отображает. Я использовал WPF Performance Kit и вижу, что происходит, но не вижу, почему. Как только оно начинает воспроизводиться, то есть обновлять изображение в графическом интерфейсе со скоростью 30 кадров в секунду, частота кадров всего приложения падает примерно до 5 кадров в секунду.

11.09.2014

  • Эта проблема, похоже, связана с программным обеспечением для управления питанием вашего ноутбука. 11.09.2014
  • Пробовали ли вы воспроизвести то же видео в WMP и посмотреть, что получится? 11.09.2014
  • Почему вы уверены, что это частота процессора? На ноутбуках с гибридными видеосистемами изменение профиля энергопотребления может отключить дискретную видеокарту и вместо нее начать использовать iGPU — это может объяснить ваши проблемы гораздо проще, чем энергосбережение ЦП. Какие видеокарты стоят в вашей машине? 11.09.2014
  • Вы правы, у ноутбука есть 2 графические системы. Встроенный чип Intel и Nvidia. Хотя я почти уверен, что это не проблема. Можно установить, на каком чипе вы хотите запускать приложение. Я пробовал переключить его на чип Nvidia, и это не имело значения. 11.09.2014
  • Хотя вы можете быть правы, это может быть не связано с процессором. Я только что попытался изменить минимальный процент процессора в настройках на 100%, и проблема все еще существовала. Я не видел никаких других настроек, которые могли бы быть причиной. 11.09.2014
  • Он отлично работает в WMP и VLC. Похоже, проблема в том, что WPF по какой-то причине не может поддерживать хороший FPS для графического интерфейса. 11.09.2014
  • У меня есть сильное подозрение, что все, что вы сделали для принудительного использования nVidia dGPU, на самом деле не сработало. 11.09.2014
  • Какую ОС вы используете? WMP и VLC будут использовать Служба планировщика мультимедийных занятий. Может быть, поэтому он может работать лучше? Вы также можете зарегистрироваться для своего приложения. 12.09.2014

Ответы:


1

Пробовали ли вы переключиться на программный рендеринг, чтобы избежать отключения процессора? Я знаю, что WPF использует отдельный поток для рендеринга, и я не уверен, что вы можете получить к нему доступ из Process.Threads. Раньше я подключался к событие изменения режима мощности и динамическое переключение режима вот так, чтобы изменения режима питания не переключались на аппаратный рендеринг. Не уверен, что это сработает, так как я не знаю, что у вас конкретно за узкое место, но, надеюсь, это укажет вам правильное направление.

11.09.2014
  • Спасибо за предложение. Да, я пытался переключиться на программный рендеринг, и это, похоже, не имело значения. 11.09.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..