1 / 31

Оптимизация производительности ПО

Оптимизация производительности ПО. Опыт на примере Spb Mobile DVD. Ким Бондаренко. Crystal Reality. Берем любимый фильм Конвертируем в оптимальный формат Смотрим на мобильном устройстве. Тестирование производительности и выявление неоптимальных частей программы. Типичный сценарий :.

Download Presentation

Оптимизация производительности ПО

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Оптимизация производительности ПО Опыт на примере Spb Mobile DVD Ким Бондаренко Crystal Reality

  2. Берем любимый фильм • Конвертируем в оптимальный формат • Смотрим на мобильном устройстве

  3. Тестирование производительности и выявление неоптимальных частей программы Типичный сценарий: • Пишем • Смотрим аналоги • Оптимизируем • Автоматизированные средства • Ищем идеи в аналогах • Переделываем все заново или объясняем тормоза наличием дополнительной функциональности

  4. Тестирование производительности и выявление неоптимальных частей программы Хороший сценарий: • Где нужна высокая производительность? • Оценка суммарной сложности низкоуровневых частей • Аналоги - заимствуем идеи • Критичные и не очень проблемы, низкоуровневые и высокоуровневые участки программы • Приоритеты • Оптимизация • Добавляем в feature-list строку fastest possible speed

  5. Низкоуровневая и высокоуровневая оптимизация Тактика и стратегия борьбы с тормозами • Подход от необходимости • Анализ подходящих алгоритмов • Компонентная архитектура, локализация проблем • Объединение компонентов программы: 2 + 2 > 4 • Выделение процедур массивной обработки данных • Низкоуровневая оптимизация • Враг-невидимка: ввод-вывод, неравномерная нагрузка • Использование многопроцессорных машин, мультизадачность

  6. Самомодифицирующийся и динамически генерирующийся код • Редкая настройка, активное использование • Жесткая привязка к ассемблеру • Возможность выполнения неподписанного кода Применение в Spb Mobile DVD: • Масштабирование видео-потока • Преобразование формата звука • Эквалайзер • Изменение настроек яркости, контрастности и насыщенности • Фильтр резкости

  7. Быстрое масштабирование изображения • Приемлемая интерполяция • Только быстрая арифметика • Небольшой размер работающей процедуры • Высокая асимметрия настройка/использование

  8. Псевдо-билинейная интерполяция

  9. Принцип работы • Генерация двух интерполяционных процедур • Сворачивание цикла. Алгоритм Брезенхема • Головной проход

  10. Объединение компонентов программы Overhead по сохранению промежуточныхрезультатов Прозрачность и простота компонентов VS

  11. Объединение компонентов программы Spb Mobile DVDвывод видео информации на экран

  12. Объединение компонентов программы Spb Mobile DVDвывод видео информации на экран • YUV – RGB конверсия • Масштабирование • Наложение дополнительной информации • Вывод на экран 10 ms 12 ms 3 ms 10 ms 35 ms + + • Наложение дополнительной информации в YUV формате, аварийное копирование кадра в случае необходимости • YUV – RGB конверсия и масштабирование с выводом на экран 2ms 13 ms 15 ms +

  13. Яркость, контрастность, насыщенность, цвет

  14. Фильтр резкости • Непрерывное изменение Чувствительная зона – 8x8 пикселей Высокая скорость

  15. Кеш-промахи • Горизонтальная организация памяти • Большой размер обрабатываемого кадра Невозможность осуществления быстрого вертикального прохода

  16. Промежуточный поворот • Вертикальная запись проходит быстро • Два последовательных поворота восстанавливают ориентацию

  17. Write-only областипочему в некоторые массивы данных стоит только писать • Отсутствие double-buffering • Чтение из видеопамяти • Кеш-промахи. Декодирование MPEG4 на мобильных устройствах

  18. Декодирование MPEG4 на мобильных устройствах • IDCT-преобразование • Write-back компенсация движения 20 ms 3 ms 13 ms 26 ms 18 ms 44 ms + + • Компенсация движения во временный буфер • IDCT-преобразование 4 ms 12 ms 16 ms 14 ms 18 ms 32 ms + +

  19. Многопроцессорная обработка мультимедиа-данных • Использование ресурсов всех процессоров, Core DUO • Минимизация простоя при синхронных операциях ввода-вывода • Overhead при использовании систем синхронизации • Усложнение отладки. Deadlock-и и несинхронизованный доступ к ресурсам

  20. Паттерны мультизадачной обработки мультимедиа информацииРаздельная обработка логических потоков • Параллельная обработка видео и аудио • Коэффициент увеличения загрузки – до x1.2 • Необходимость общей синхронизации ресурсов приложения

  21. Паттерны мультизадачной обработки мультимедиа информацииЛокальное распараллеливание: форк-системы • Приложение может оставаться незащищенным • Коэффициент увеличения загрузки стремится к x2.0 • Необходимость внесения изменений в низкоуровневую часть обработчика

  22. Паттерны мультизадачной обработки мультимедиа информацииОтложенная работа • Приложение может оставаться незащищенным • Коэффициент увеличения загрузки ограничен лишь длиной обрабатывающей цепочки • Возможное замедление работы на однопроцессорных машинах. Необходимость усложнения высокоуровневой логики

  23. Объект “критическая секция” Оптимизация приложений для Windows Mobile и Symbian • Всегда связывается с системным объектом • Медленно создается • Приходится экономить на количестве отдельно-защищенных объектов

  24. Объект “критическая секция” Оптимизация приложений для Windows Mobile и Symbian Собственная реализация критической секции: • Мгновенно создается • Занимает 8 байт • Вход и выход – несколько простых инструкций • Создает системный объект только в случае конфликтной ситуации Решение:

  25. Менеджеры памятиОптимизация приложений для Windows Mobile и Symbian • Медленный поиск • Высокая фрагментация • Ограниченность адресного пространства Проблемы:

  26. Менеджеры памятиОптимизация приложений для Windows Mobile и Symbian • Перегрузка операторов выделения памяти • Использование пула мелких объектов • Выбор менеджера памяти MinGW • Выделение рабочей области с помощью CreateFileMapping Решение:

  27. Счетчики ссылокПроблемы и преимущества • Значительное упрощение проблемы освобождения ресурсов • Увеличение размера выполняемого кода • Замедление работы

  28. Счетчики ссылокПодход Crystal2 Создать С++ библиотеку и ряд правил, позволяющих: • Объявление интерфейсов, реализаций и частичных реализаций объектов • Разрешающих множественную деревянную иерархию интерфейсов • Подсчет ссылок • Dynamic cast (Query-Interface)

  29. Счетчики ссылокПодход Crystal2 Отличия от COM: • Статическое размещение указателя на счетчик ссылок в теле интерфейсов • 32-х разрядный идентификатор интерфейса • Не изменение счетчика ссылок при вызове QueryInterface

  30. Счетчики ссылокПодход Crystal2 Результаты: • Ускорение работы с счетчиком ссылок • Ускорение метода QueryInterface • Возможность быстрой работы с временно полученными интерфейсами • Возможность коллизии идентификаторов интерфейсов • Невозможность создания дочерних объектов в теле QueryInterface

  31. Вопросы

More Related