Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Существует ли простая оценка качества оптимизации приложения?

Блог компании IntelПрограммированиеКомпиляторы
image

Тише едешь дальше будешь...? Оценка производительности.



Больше 7 лет я занимаюсь анализом производительности в составе группы Performance Analysis новосибирского отделения Интел. Мы работаем над улучшением производительности различных приложений, а точнее, ищем способы, с помощью которых ее смог бы улучшить наш компилятор. За это время накопился полезный опыт, который, на мой взгляд, был бы интересен посетителям уважаемого Хабра. Речь в данном случае будет идти не об алгоритмической оптимизации приложений, а о различных модификациях приложений без принципиального изменения их алгоритмов. Понятно, что алгоритмические оптимизации программы тоже имеют право на жизнь, но это совсем другая задача.

Читать дальше →
Всего голосов 37: ↑29 и ↓8 +21
Просмотры9.4K
Комментарии 42

Основные проблемы влияющие на производительность вычислительного ядра и приложения и методы их решения компилятором

Блог компании IntelВысокая производительностьКомпиляторы


Продолжаю разговор об оптимизации приложений, начатый здесь в посте «Существует ли простая оценка качества оптимизации приложения?»

Про процессоры можно говорить много и подробно и, наверняка, среди читателей Хабра есть масса людей споcобных на такие разговоры. Но моя точка зрения на процессор сугубо прагматичная. Поскольку меня интересует производительность приложения, через призму производительности процессора, то мне достаточно понимания базовых принципов работы вычислительного ядра. А также методов, которые существуют, чтобы на эти базовые принципы воздействовать. Буду я ориентироваться на архитектуру Intel64. Это вызвано тем, что в нашей команде анализа производительности мы занимаемся анализом работы оптимизирующего компилятора Intel, в основном, именно для этой архитектуры. На рынке вычислительных систем для высокопроизводительных вычислений эта и совместимые архитектуры занимают львинную долю, поэтому большинство проблем производительности имеет довольно общую природу. Давайте я коротко перечислю те основные проблемы и возможности, которые определяют производительность ядра и вычислительной системы и предложу короткий список различных оптимизаций, призванных влиять на эти проблемы.

Читать дальше →
Всего голосов 28: ↑21 и ↓7 +14
Просмотры15.4K
Комментарии 13

Разбиение цикла как пример высокоуровневой оптимизации

Блог компании IntelВысокая производительностьКомпиляторы
image

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

Читать дальше →
Всего голосов 12: ↑9 и ↓3 +6
Просмотры7.1K
Комментарии 4

Презумпция виновности программиста или почему компилятор иногда «тупит»

Блог компании IntelВысокая производительностьКомпиляторы
image

Этот пост снова посвящается цикловым оптимизациям. Почему вообще речь зашла о цикловых перестановочных оптимизациях? Дело в том, что это одна из самых эффективных частей оптимизирующего компилятора. В число цикловых перестановочных оптимизаций входит как автовекторизация так и автопараллелизация. У этих оптимизаций существует своя специфика, но в целом у всех цикловых оптимизаций общие проблемы и общие методы их решения.
Часто приходится слышать мнение, что компилятор во многих случаях «тупит». Мне хочется здесь побыть адвокатом компилятора, чтобы показать, что жизнь компилятора не так уж легка, возможно вызвать легкую долю сочувствия к его нелегкой доле и показать, какие существуют объективные трудности при обработке программы и почему во многих случаях компилятор совершенно обоснованно не может сделать ту или иную оптимизацию, которая кажется очевидной программисту. Ну и заодно я хочу продемонстрировать некоторые возможности помочь компилятору в его работе. Понятно, что иногда существуют и субъективные факторы, в лице разработчиков, которые по како-либо причине не реализовали ту или иную функциональность внутри компилятора.

Читать дальше →
Всего голосов 31: ↑28 и ↓3 +25
Просмотры15.8K
Комментарии 18

Сравнение производительности С++ и C#

Высокая производительностьРазработка веб-сайтовC++AssemblerC#
Recovery mode
Существуют различные мнения относительно производительности С++ и C#.

Например, сложно поспорить с тем, что код C# может работать быстрее за счет оптимизации под платформу во время JIT компиляции. Или например с тем, что ядро .Net Framework само по себе очень хорошо оптимизировано.

С другой стороны, весомым аргументом является то, что С++ компилируется непосредственно в машинный код и работает с минимально возможным количеством хелперов и прослоек.

Встречаются и мнения о том, что производительность кода измерять не правильно, ибо микро уровень не характеризует производительность на макро уровне. (я конечно соглашусь с тем что на макроуровне можно испортить производительность, но вряд ли соглашусь с тем что производительность на макро-уровне не складывается из производительности на микро-уровне)

Попадались и утверждения о том, что код на С++ примерно в десять раз быстрее кода на С#.

Все это многообразие противоречивых мнений приводит к мысли о том, что нужно самому попробовать написать максимально идентичный и простой код на одном и другом языке, и сравнить время его выполнения. Что и было мною сделано.
Читать дальше →
Всего голосов 78: ↑51 и ↓27 +24
Просмотры68.4K
Комментарии 212

Одновременный анализ энергопотребления/производительности Android-устройств с помощью Intel VTune Amplifier и SoC Watch

Блог компании IntelРазработка под AndroidПрограммирование микроконтроллеровРазработка для интернета вещей
Перевод
Благодаря некоторым новым возможностям, доступным в Intel VTune Amplifier 2016 Update 1, в настоящее время сравнительно просто организовать одновременный анализ энергопотребления и производительности Android-устройств без необходимости их постоянного соединения с компьютером по USB.


Стоит отметить, что, хотя можно подключить Android-устройство к компьютеру по схеме «ADB over WiFi», и, таким образом избежать необходимости использования опции анализа отключённого устройства, обычно проще подключить целевое устройство по USB. Если вы вместо этого хотите использовать WiFi, можете найти инструкции по настройке этой схемы в документации к Intel VTune Amplifier.
Читать дальше →
Всего голосов 22: ↑19 и ↓3 +16
Просмотры7K
Комментарии 2

Практическое руководство по анализу производительности приложений

Блог компании JUG Ru GroupВысокая производительность.NETC#
Вы уже наверняка знаете, что спустя несколько месяцев после конференций мы выкладываем видеозаписи всех докладов. А для самых лучших, как в случае с кейноутом Саши goldshtn Гольдштейна, мы готовим еще и расшифровки — чтобы приобщиться могли и те, кто не любит видеоформат.

Саша рассказывает о способах и инструментах анализа производительности приложений, в том числе разработанных им самим.



В основе статьи — выступление Саши на конференции DotNext 2017 Piter. Саша работает техническим директором израильской тренинговой и консалтинговой компании Sela и не понаслышке знает, как проводить анализ производительности. Как его лучше начинать, чем завершать, какие инструменты стоит использовать, а каких избегать, читайте под катом.
Читать дальше →
Всего голосов 27: ↑26 и ↓1 +25
Просмотры9.1K
Комментарии 0

Анализ производительности накопителя Intel Optane SSD 750ГБ

Блог компании Selectel


Летом прошлого года мы опубликовали статью о дисковых накопителях Intel Optane SSD и предложили всем желающим принять участие в бесплатном тестировании. Новинка вызвала большой интерес: наши пользователи пробовали применять Optane для научных расчётов, для работы с in-memory базами данных, для проектов в области машинного обучения.
Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Просмотры9.4K
Комментарии 7