SlideShare a Scribd company logo
1 of 19
Download to read offline
Бенчмарки как критерий
 естественного отбора
                         Сергей Катков
                              Intel Corp.
Материалы, размещенные в данной презентации (далее по тексту — "материалы"), предоставлены корпорацией Intel (далее
по тексту — "Intel") в качестве услуги потребителям, потенциальным потребителям ее продукции и потенциальным
клиентам исключительно в информативных целях.
Обозначения и наименования Intel, Intel®, логотип Intel, являются наименованиями и/или товарными знаками, права на
которые принадлежат корпорации Intel или ее подразделениям на территории США и других стран.
*Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Результаты тестирования и рейтинговые показатели, полученные с применением конкретных компьютерных систем и/или
их компонентов, отражают приблизительную производительность продукции Intel по данным упомянутого тестирования.
Всякое отличие в компоновке или конфигурации аппаратных средств или программного обеспечения может сказаться на
реальных показателях производительности. Для оценки производительности тех или иных систем или компонентов перед
их приобретением покупателям следует обратиться к другим источникам информации. Дополнительные сведения о
результатах тестирования и о показателях производительности продукции Intel доступны в Интернете по адресу
http://www.intel.com/performance/resources/limits.htm либо по телефону в США 1-800-628-8686 или 1-916-356-3104.


Copyright © 2011 Intel Corporation. Данные материалы охраняются авторским правом и защищены нормами международного
законодательства об охране авторских прав и соответствующих международных соглашений. Без предварительного
письменного согласия корпорации Intel не допускается их копирование, воспроизведение, внесение в них изменений,
публикация, загрузка, размещение их в Интернете, пересылка или распространение любыми способами. Если данным
документом недвусмысленно не предусмотрено иное, корпорация Intel и ее поставщики не предоставляют пользователю
каких-либо прав собственности, как явных, так и подразумеваемых, в отношении каких-либо патентов, авторских прав,
товарных знаков или сведений, составляющих коммерческую тайну. Иные права могут быть предоставлены Вам корпорацией
Intel либо в письменной форме, либо путем внесения соответствующих положений в документацию, сопровождающую
материалы.
МАТЕРИАЛЫ ПРЕДОСТАВЛЯЮТСЯ ПО ПРИНЦИПУ "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ,
ВКЛЮЧАЯ, В ЧИСЛЕ ПРОЧЕГО, ГАРАНТИЙ В ОТНОШЕНИИ ИХ РЫНОЧНЫХ КАЧЕСТВ, НЕНАРУШЕНИЯ ПРАВ НА
ИНТЕЛЛЕКТУАЛЬНУЮ СОБСТВЕННОСТЬ ИЛИ ПРИГОДНОСТИ К ИСПОЛЬЗОВАНИЮ В ТЕХ ИЛИ ИНЫХ КОНКРЕТНЫХ ЦЕЛЯХ. НИ
ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ КОРПОРАЦИЯ INTEL ИЛИ ЕЕ ПОСТАВЩИКИ НЕ НЕСУТ КАКОЙ-ЛИБО ОТВЕТСТВЕННОСТИ ЗА
УЩЕРБ (ВКЛЮЧАЯ, В ЧИСЛЕ ПРОЧЕГО, УПУЩЕННУЮ ВЫГОДУ, ПОСЛЕДСТВИЯ ПРИОСТАНОВКИ ПРЕДПРИНИМАТЕЛЬСКОЙ
ДЕЯТЕЛЬНОСТИ ИЛИ ПОТЕРЮ ДАННЫХ), ВЫТЕКАЮЩИЙ ИЗ ФАКТА ИСПОЛЬЗОВАНИЯ МАТЕРИАЛОВ, ЛИБО НЕВОЗМОЖНОСТИ
ИХ ИСПОЛЬЗОВАТЬ, ЧТО РАСПРОСТРАНЯЕТСЯ И НА ТЕ СЛУЧАИ, КОГДА КОРПОРАЦИЯ INTEL БЫЛА ПРЕДУПРЕЖДЕНА О
ВОЗМОЖНОСТИ НАНЕСЕНИЯ ТАКОГО УЩЕРБА. УЧИТЫВАЯ, ЧТО ЗАКОНОДАТЕЛЬСТВО, ДЕЙСТВУЮЩЕЕ В РЯДЕ ЮРИСДИКЦИЙ,
НЕ ДОПУСКАЕТ ОГРАНИЧЕНИЯ ИЛИ ОТКАЗА ОТ ОТВЕТСТВЕННОСТИ ЗА ПОБОЧНЫЙ ИЛИ КОСВЕННЫЙ УЩЕРБ, ИЗЛОЖЕННОЕ
ВЫШЕ ПОЛОЖЕНИЕ МОЖЕТ К ВАМ НЕ ОТНОСИТЬСЯ. Корпорация Intel и ее поставщики не гарантируют точности или полноты
текстовой или графической информации, ссылок и иного содержания материалов. Корпорация Intel вправе в любое время и
без предварительного уведомления вносить любые изменения в указанные материалы, а равно и в продукцию, описанием
которой они служат. Корпорация Intel не берет на себя каких-либо обязательств по обновлению материалов.



 2                Бенчмарки как критерий естественного отбора
Что такое бенчмарк
Бенчмарк – это тест на производительность.


Бенчмарк может измерять:
• Кол-во операций в секунду
• Среднее/Максимальное время исполнения одной операции
• Энерго-эффективность одной операции
• Масштабируемость
• ...

Все что угодно, связанное с производительностью

3        Бенчмарки как критерий естественного отбора
Пользователи – Бенчмарк – Производители



Пользователи                           Бенчмарк                   Производители




                               Продукт              Продукт

                                    Продукт             Продукт




4         Бенчмарки как критерий естественного отбора
Типы бенчмарок

    Реальные приложения                                  Микро-бенчмарки




    Бенчмарки библиотек                               Синтетические бенчмарки




5       Бенчмарки как критерий естественного отбора
Синтетические бенчмарки
Business Applications Performance Corporation
         Embedded Microprocessor Benchmark Consortium
                       Standard Performance Evaluation Corporation
                                     Transaction Processing Performance Council




                                          Общепризнанные бенчмарки
                                                 сделанные
                                        некоммерческими организациями

                                                         Brands, logos and product names appearing on this page are trademarks
                                                         or registered trademarks of their respective holders.




6          Бенчмарки как критерий естественного отбора
SPEC - бенчмарки


      CPU                                             NFS
                                Graphics
                               Workstation
                                                        Power
    MPI/OMP
                           Java Client/Server

       SIP                                             SOA

                                     Virtualization
    Mail Servers                                      Web Servers


7       Бенчмарки как критерий естественного отбора
SPEC – Java бенчмарки

    SPECjbb2005 – оценка производительности серверов для
      типичных бизнес приложений на Java. Эмулирует обработку
      заказов для оптового поставщика.
    SPECjEnterprise2010 – оценка производительности всей системы,
      на которой работает сервер приложений, база данных и
      соответствующая инфраструкутра.
    SPECjms2007 – оценка производительности серверов
      использующих JMS (Java Message Service)
    SPECjvm2008 – оценка производительности JRE (состоит из
      нескольких реальных приложений и синтетических приложений
      тестирующих core Java API).
    SPECpower_ssj2008 – комбинированная бенчмарка,
      оценивающая производительность и потребление энергии
      одновременно.

8           Бенчмарки как критерий естественного отбора
SPEC – что можно найти?




                                                  ?
     Лицензия
                                                      Описание




    Результаты                                        Участие


9       Бенчмарки как критерий естественного отбора
А подходит ли мне синтетическая бенчмарка?
                                Хммм..
                     А похоже ли мое приложение
                     на синтетическую бенчмарку?




     Подробно изучайте описание бенчмарки

                  Поищите другие бенчмарки

                       Настройте бенчмарку

10      Бенчмарки как критерий естественного отбора
Как создаются синтетические бенчмарки?

 •   Выбор целевой аудитории для бенчмарка
 •   Контакты с тем, кто оперирует на этом рынке для определения
     стандартых сценариев
 •   Сбор статистики об всех типах операций со многих приложений из этой
     области
 •   Создания сценария на основе пропорций типов операций
 •   Тестирование
 •   Определение правил запуска бенчмарка, чтобы
     сделать возможным корректное сравнение результатов
 •   Ревью бенчмарка всеми компетентными сторонами
 •   Выпуск бенчмарка

                Для любого бенчмарка важно,
           чтобы она была широко признана средой.
      Иначе ей не будут доверять и не будут использовать!
11          Бенчмарки как критерий естественного отбора
Некоторые из аттрибутов хорошего бенчмарка

 • Повторяемость результата – что делать, если вы все время
   получаете разный результат?
 • Репрезентативность – сценарий должен соответствоать
   реальному использованию.
 • Легкость запуска – бенчмарк прийдется запускать много раз, вы
   можете например тьюнить систему. Запуск бенчмарки не
   должен быть головной болью.
 • Верифицируемость – бенчмарк должен убедиться, что работа
   реально выполнялась.
 • Метрики должны быть ясны – вы четко должны понимать, что
   именно вы получаете.
 • Анализируемость – бенчмарк должен
   позволять анализировать свое поведение.


12        Бенчмарки как критерий естественного отбора
Специфика Java - GC (Garbage Collection)
 List<IterationStatus> result = new ArrayList<IterationStatus>();
 private long test() {
     long time = System.nanoTime();
     for(int i = 0; i < N; i++) {
           long startResponseTime = System.nanoTime();
           func(); // метод, выполняющий математическое вычисление
           result.add(new IterationStatus(System.nanoTime() - startResponseTime), …);
           // Создаем очень большое кол-во новых объектов => GC

     }
     long endTime = System.nanoTime();
     double avgTime = ((double)(endTime – startTime)) / N;
     return (long) (1000000000d / avgTime); // Кол-во операций в секунду
 }
13            Бенчмарки как критерий естественного отбора
Специфика Java - GC (Garbage Collection)

 private long test() {
     long time = System.nanoTime();
     func(); // метод, создающий большое кол-во новых объектов
     // Возможно при втором запуске этого метода, произойдет
     вызов GC,
     // Но мы этого не увидим => неверный результат
     long endTime = System.nanoTime();
     return endTime – startTime;
 }




14          Бенчмарки как критерий естественного отбора
Специфика Java - JIT (Just In Time compilation)
 private long test() {
     long time = System.nanoTime();
     for(int i = 0; i < N; i++) {
           func(); // тестируемый метод
     }
     long endTime = System.nanoTime();
     double avgTime = ((double)(endTime – startTime)) / N;
     return (long) (1000000000d / avgTime); // Кол-во операций в
     секунду
 }
     Если N мало, то мы будем измерять Интерпретатор
                  Используйте разогрев!!!
15           Бенчмарки как критерий естественного отбора
Специфика Java - JIT (Just In Time compilation)
 private long test() {                                      Если Вы тестируете
     for(int i = 0; i < N; i++) { // разогрев               апплет, который будет
                                                            исполняться только один
           func(); // тестируемы метод
                                                            раз, то Вы получите
     }                                                      слишком оптимистичный
                                                            результат!!!
     long time = System.nanoTime();
     for(int i = 0; i < N; i++) {
           func(); // тестируемы метод
     }
     long endTime = System.nanoTime();
     double avgTime = ((double)(endTime – startTime)) / N;
     return (long) (1000000000d / avgTime); // Кол-во операций в секунду
 }

16            Бенчмарки как критерий естественного отбора
Специфика Java - JIT (Just In Time compilation)
 private long test() {
     for(int i = 0; i < N; i++) { // разогрев
                                                             private void func() {
            func(); // тестируемы метод                         double x = Math.sqrt(2012d);
     }                                                       }
     long time = System.nanoTime();
     for(int i = 0; i < N; i++) {
            func(); // тестируемы метод
     }
     long endTime = System.nanoTime();
     double avgTime = ((double)(endTime – startTime)) / N;
     return (long) (1000000000d / avgTime); // Кол-во операций в секунду
 }
          Результат вычислений нигде не используется,
              JIT может просто выбросить этот код.
17             Бенчмарки как критерий естественного отбора
Заключение

 • Используйте бенчмарки для оценки производительности
 • Оценивайте релевантность бенчмарки Вашим целям
 • Используете бенчмарки, которые признаны или которым Вы
   целиком доверяете
 • Критически относитесь к результатам бенчмарок, которые
   получены из недостоверных источников
 • Если Вы создаете свой бенчмарк:
     •   Убедитесь, что бенчмарк реально тестирует, то что Вы ожидаете
     •   Убедитесь, что тестирумый код реально работает
     •   Сравните полученный результат с ожиданием
     •   Проверьте бенчмарк в разных условиях и сравните результаты
     •   Объясните и докажите себе, что полученный результат
         действительно правильный


18            Бенчмарки как критерий естественного отбора
Вопросы



19   Бенчмарки как критерий естественного отбора

More Related Content

Similar to CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

Выбор и тестирование Ngfw. Опыт Rambler
Выбор и тестирование Ngfw. Опыт RamblerВыбор и тестирование Ngfw. Опыт Rambler
Выбор и тестирование Ngfw. Опыт RamblerKonstantin Sverdlov
 
Нагрузочное тестирование проектов на Drupal с использованием Apache JMeter
Нагрузочное тестирование проектов на Drupal с использованием Apache JMeterНагрузочное тестирование проектов на Drupal с использованием Apache JMeter
Нагрузочное тестирование проектов на Drupal с использованием Apache JMeterPVasili
 
Вебинар «Диагностика типовых узких мест скорости работы 1С»
Вебинар «Диагностика типовых узких мест скорости работы 1С»Вебинар «Диагностика типовых узких мест скорости работы 1С»
Вебинар «Диагностика типовых узких мест скорости работы 1С»Igor Marutiak
 
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019GoQA
 
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019GoQA
 
Липский Павел
Липский ПавелЛипский Павел
Липский ПавелOntico
 
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...SQALab
 
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...sqadays8
 
Building Open Source Test Automation Frameworks. Watir based automation case ...
Building Open Source Test Automation Frameworks. Watir based automation case ...Building Open Source Test Automation Frameworks. Watir based automation case ...
Building Open Source Test Automation Frameworks. Watir based automation case ...Aliaksandr Ikhelis
 
Optimizing Platform Performance Ru
Optimizing Platform Performance RuOptimizing Platform Performance Ru
Optimizing Platform Performance Ruguest09c59b06
 
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...Tech Talks @NSU
 
Ui testing how intel does this
Ui testing   how intel does thisUi testing   how intel does this
Ui testing how intel does thisAlexei Lupan
 
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUAREТехники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARESQALab
 
Тимур Шевляков
Тимур ШевляковТимур Шевляков
Тимур ШевляковCodeFest
 
SAM за 7 шагов. Рецепт для небольших компаний
SAM за 7 шагов. Рецепт для небольших компанийSAM за 7 шагов. Рецепт для небольших компаний
SAM за 7 шагов. Рецепт для небольших компанийValery Bychkov
 
SAM за 7 шагов. Рецепт для небольших компаний
SAM за 7 шагов. Рецепт для небольших компанийSAM за 7 шагов. Рецепт для небольших компаний
SAM за 7 шагов. Рецепт для небольших компанийCleverics
 
Автоматизация тестирования. Глобализация
Автоматизация тестирования. ГлобализацияАвтоматизация тестирования. Глобализация
Автоматизация тестирования. ГлобализацияSQALab
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программTatyanazaxarova
 
Как спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноКак спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноBubon Makabra
 
[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoFAleksey Shipilev
 

Similar to CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора (20)

Выбор и тестирование Ngfw. Опыт Rambler
Выбор и тестирование Ngfw. Опыт RamblerВыбор и тестирование Ngfw. Опыт Rambler
Выбор и тестирование Ngfw. Опыт Rambler
 
Нагрузочное тестирование проектов на Drupal с использованием Apache JMeter
Нагрузочное тестирование проектов на Drupal с использованием Apache JMeterНагрузочное тестирование проектов на Drupal с использованием Apache JMeter
Нагрузочное тестирование проектов на Drupal с использованием Apache JMeter
 
Вебинар «Диагностика типовых узких мест скорости работы 1С»
Вебинар «Диагностика типовых узких мест скорости работы 1С»Вебинар «Диагностика типовых узких мест скорости работы 1С»
Вебинар «Диагностика типовых узких мест скорости работы 1С»
 
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
 
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
 
Липский Павел
Липский ПавелЛипский Павел
Липский Павел
 
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...
 
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
 
Building Open Source Test Automation Frameworks. Watir based automation case ...
Building Open Source Test Automation Frameworks. Watir based automation case ...Building Open Source Test Automation Frameworks. Watir based automation case ...
Building Open Source Test Automation Frameworks. Watir based automation case ...
 
Optimizing Platform Performance Ru
Optimizing Platform Performance RuOptimizing Platform Performance Ru
Optimizing Platform Performance Ru
 
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
 
Ui testing how intel does this
Ui testing   how intel does thisUi testing   how intel does this
Ui testing how intel does this
 
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUAREТехники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
 
Тимур Шевляков
Тимур ШевляковТимур Шевляков
Тимур Шевляков
 
SAM за 7 шагов. Рецепт для небольших компаний
SAM за 7 шагов. Рецепт для небольших компанийSAM за 7 шагов. Рецепт для небольших компаний
SAM за 7 шагов. Рецепт для небольших компаний
 
SAM за 7 шагов. Рецепт для небольших компаний
SAM за 7 шагов. Рецепт для небольших компанийSAM за 7 шагов. Рецепт для небольших компаний
SAM за 7 шагов. Рецепт для небольших компаний
 
Автоматизация тестирования. Глобализация
Автоматизация тестирования. ГлобализацияАвтоматизация тестирования. Глобализация
Автоматизация тестирования. Глобализация
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программ
 
Как спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноКак спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важно
 
[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF
 

More from CodeFest

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита ПрокоповCodeFest
 
Денис Баталов
Денис БаталовДенис Баталов
Денис БаталовCodeFest
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена ГальцинаCodeFest
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр КалашниковCodeFest
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина ИвановаCodeFest
 
Marko Berković
Marko BerkovićMarko Berković
Marko BerkovićCodeFest
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис КортуновCodeFest
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр ЗиминCodeFest
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей КрапивенскийCodeFest
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей ИгнатовCodeFest
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай КрапивныйCodeFest
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим СмирновCodeFest
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин ОсиповCodeFest
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele RialdiCodeFest
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим ПугачевCodeFest
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene GroeschkeCodeFest
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван БондаренкоCodeFest
 
Mete Atamel
Mete AtamelMete Atamel
Mete AtamelCodeFest
 

More from CodeFest (20)

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита Прокопов
 
Денис Баталов
Денис БаталовДенис Баталов
Денис Баталов
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена Гальцина
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр Калашников
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина Иванова
 
Marko Berković
Marko BerkovićMarko Berković
Marko Berković
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис Кортунов
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр Зимин
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей Крапивенский
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей Игнатов
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай Крапивный
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим Смирнов
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene Groeschke
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван Бондаренко
 
Mete Atamel
Mete AtamelMete Atamel
Mete Atamel
 

CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

  • 1. Бенчмарки как критерий естественного отбора Сергей Катков Intel Corp.
  • 2. Материалы, размещенные в данной презентации (далее по тексту — "материалы"), предоставлены корпорацией Intel (далее по тексту — "Intel") в качестве услуги потребителям, потенциальным потребителям ее продукции и потенциальным клиентам исключительно в информативных целях. Обозначения и наименования Intel, Intel®, логотип Intel, являются наименованиями и/или товарными знаками, права на которые принадлежат корпорации Intel или ее подразделениям на территории США и других стран. *Другие наименования и товарные знаки являются собственностью своих законных владельцев. Результаты тестирования и рейтинговые показатели, полученные с применением конкретных компьютерных систем и/или их компонентов, отражают приблизительную производительность продукции Intel по данным упомянутого тестирования. Всякое отличие в компоновке или конфигурации аппаратных средств или программного обеспечения может сказаться на реальных показателях производительности. Для оценки производительности тех или иных систем или компонентов перед их приобретением покупателям следует обратиться к другим источникам информации. Дополнительные сведения о результатах тестирования и о показателях производительности продукции Intel доступны в Интернете по адресу http://www.intel.com/performance/resources/limits.htm либо по телефону в США 1-800-628-8686 или 1-916-356-3104. Copyright © 2011 Intel Corporation. Данные материалы охраняются авторским правом и защищены нормами международного законодательства об охране авторских прав и соответствующих международных соглашений. Без предварительного письменного согласия корпорации Intel не допускается их копирование, воспроизведение, внесение в них изменений, публикация, загрузка, размещение их в Интернете, пересылка или распространение любыми способами. Если данным документом недвусмысленно не предусмотрено иное, корпорация Intel и ее поставщики не предоставляют пользователю каких-либо прав собственности, как явных, так и подразумеваемых, в отношении каких-либо патентов, авторских прав, товарных знаков или сведений, составляющих коммерческую тайну. Иные права могут быть предоставлены Вам корпорацией Intel либо в письменной форме, либо путем внесения соответствующих положений в документацию, сопровождающую материалы. МАТЕРИАЛЫ ПРЕДОСТАВЛЯЮТСЯ ПО ПРИНЦИПУ "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ, ВКЛЮЧАЯ, В ЧИСЛЕ ПРОЧЕГО, ГАРАНТИЙ В ОТНОШЕНИИ ИХ РЫНОЧНЫХ КАЧЕСТВ, НЕНАРУШЕНИЯ ПРАВ НА ИНТЕЛЛЕКТУАЛЬНУЮ СОБСТВЕННОСТЬ ИЛИ ПРИГОДНОСТИ К ИСПОЛЬЗОВАНИЮ В ТЕХ ИЛИ ИНЫХ КОНКРЕТНЫХ ЦЕЛЯХ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ КОРПОРАЦИЯ INTEL ИЛИ ЕЕ ПОСТАВЩИКИ НЕ НЕСУТ КАКОЙ-ЛИБО ОТВЕТСТВЕННОСТИ ЗА УЩЕРБ (ВКЛЮЧАЯ, В ЧИСЛЕ ПРОЧЕГО, УПУЩЕННУЮ ВЫГОДУ, ПОСЛЕДСТВИЯ ПРИОСТАНОВКИ ПРЕДПРИНИМАТЕЛЬСКОЙ ДЕЯТЕЛЬНОСТИ ИЛИ ПОТЕРЮ ДАННЫХ), ВЫТЕКАЮЩИЙ ИЗ ФАКТА ИСПОЛЬЗОВАНИЯ МАТЕРИАЛОВ, ЛИБО НЕВОЗМОЖНОСТИ ИХ ИСПОЛЬЗОВАТЬ, ЧТО РАСПРОСТРАНЯЕТСЯ И НА ТЕ СЛУЧАИ, КОГДА КОРПОРАЦИЯ INTEL БЫЛА ПРЕДУПРЕЖДЕНА О ВОЗМОЖНОСТИ НАНЕСЕНИЯ ТАКОГО УЩЕРБА. УЧИТЫВАЯ, ЧТО ЗАКОНОДАТЕЛЬСТВО, ДЕЙСТВУЮЩЕЕ В РЯДЕ ЮРИСДИКЦИЙ, НЕ ДОПУСКАЕТ ОГРАНИЧЕНИЯ ИЛИ ОТКАЗА ОТ ОТВЕТСТВЕННОСТИ ЗА ПОБОЧНЫЙ ИЛИ КОСВЕННЫЙ УЩЕРБ, ИЗЛОЖЕННОЕ ВЫШЕ ПОЛОЖЕНИЕ МОЖЕТ К ВАМ НЕ ОТНОСИТЬСЯ. Корпорация Intel и ее поставщики не гарантируют точности или полноты текстовой или графической информации, ссылок и иного содержания материалов. Корпорация Intel вправе в любое время и без предварительного уведомления вносить любые изменения в указанные материалы, а равно и в продукцию, описанием которой они служат. Корпорация Intel не берет на себя каких-либо обязательств по обновлению материалов. 2 Бенчмарки как критерий естественного отбора
  • 3. Что такое бенчмарк Бенчмарк – это тест на производительность. Бенчмарк может измерять: • Кол-во операций в секунду • Среднее/Максимальное время исполнения одной операции • Энерго-эффективность одной операции • Масштабируемость • ... Все что угодно, связанное с производительностью 3 Бенчмарки как критерий естественного отбора
  • 4. Пользователи – Бенчмарк – Производители Пользователи Бенчмарк Производители Продукт Продукт Продукт Продукт 4 Бенчмарки как критерий естественного отбора
  • 5. Типы бенчмарок Реальные приложения Микро-бенчмарки Бенчмарки библиотек Синтетические бенчмарки 5 Бенчмарки как критерий естественного отбора
  • 6. Синтетические бенчмарки Business Applications Performance Corporation Embedded Microprocessor Benchmark Consortium Standard Performance Evaluation Corporation Transaction Processing Performance Council Общепризнанные бенчмарки сделанные некоммерческими организациями Brands, logos and product names appearing on this page are trademarks or registered trademarks of their respective holders. 6 Бенчмарки как критерий естественного отбора
  • 7. SPEC - бенчмарки CPU NFS Graphics Workstation Power MPI/OMP Java Client/Server SIP SOA Virtualization Mail Servers Web Servers 7 Бенчмарки как критерий естественного отбора
  • 8. SPEC – Java бенчмарки SPECjbb2005 – оценка производительности серверов для типичных бизнес приложений на Java. Эмулирует обработку заказов для оптового поставщика. SPECjEnterprise2010 – оценка производительности всей системы, на которой работает сервер приложений, база данных и соответствующая инфраструкутра. SPECjms2007 – оценка производительности серверов использующих JMS (Java Message Service) SPECjvm2008 – оценка производительности JRE (состоит из нескольких реальных приложений и синтетических приложений тестирующих core Java API). SPECpower_ssj2008 – комбинированная бенчмарка, оценивающая производительность и потребление энергии одновременно. 8 Бенчмарки как критерий естественного отбора
  • 9. SPEC – что можно найти? ? Лицензия Описание Результаты Участие 9 Бенчмарки как критерий естественного отбора
  • 10. А подходит ли мне синтетическая бенчмарка? Хммм.. А похоже ли мое приложение на синтетическую бенчмарку? Подробно изучайте описание бенчмарки Поищите другие бенчмарки Настройте бенчмарку 10 Бенчмарки как критерий естественного отбора
  • 11. Как создаются синтетические бенчмарки? • Выбор целевой аудитории для бенчмарка • Контакты с тем, кто оперирует на этом рынке для определения стандартых сценариев • Сбор статистики об всех типах операций со многих приложений из этой области • Создания сценария на основе пропорций типов операций • Тестирование • Определение правил запуска бенчмарка, чтобы сделать возможным корректное сравнение результатов • Ревью бенчмарка всеми компетентными сторонами • Выпуск бенчмарка Для любого бенчмарка важно, чтобы она была широко признана средой. Иначе ей не будут доверять и не будут использовать! 11 Бенчмарки как критерий естественного отбора
  • 12. Некоторые из аттрибутов хорошего бенчмарка • Повторяемость результата – что делать, если вы все время получаете разный результат? • Репрезентативность – сценарий должен соответствоать реальному использованию. • Легкость запуска – бенчмарк прийдется запускать много раз, вы можете например тьюнить систему. Запуск бенчмарки не должен быть головной болью. • Верифицируемость – бенчмарк должен убедиться, что работа реально выполнялась. • Метрики должны быть ясны – вы четко должны понимать, что именно вы получаете. • Анализируемость – бенчмарк должен позволять анализировать свое поведение. 12 Бенчмарки как критерий естественного отбора
  • 13. Специфика Java - GC (Garbage Collection) List<IterationStatus> result = new ArrayList<IterationStatus>(); private long test() { long time = System.nanoTime(); for(int i = 0; i < N; i++) { long startResponseTime = System.nanoTime(); func(); // метод, выполняющий математическое вычисление result.add(new IterationStatus(System.nanoTime() - startResponseTime), …); // Создаем очень большое кол-во новых объектов => GC } long endTime = System.nanoTime(); double avgTime = ((double)(endTime – startTime)) / N; return (long) (1000000000d / avgTime); // Кол-во операций в секунду } 13 Бенчмарки как критерий естественного отбора
  • 14. Специфика Java - GC (Garbage Collection) private long test() { long time = System.nanoTime(); func(); // метод, создающий большое кол-во новых объектов // Возможно при втором запуске этого метода, произойдет вызов GC, // Но мы этого не увидим => неверный результат long endTime = System.nanoTime(); return endTime – startTime; } 14 Бенчмарки как критерий естественного отбора
  • 15. Специфика Java - JIT (Just In Time compilation) private long test() { long time = System.nanoTime(); for(int i = 0; i < N; i++) { func(); // тестируемый метод } long endTime = System.nanoTime(); double avgTime = ((double)(endTime – startTime)) / N; return (long) (1000000000d / avgTime); // Кол-во операций в секунду } Если N мало, то мы будем измерять Интерпретатор Используйте разогрев!!! 15 Бенчмарки как критерий естественного отбора
  • 16. Специфика Java - JIT (Just In Time compilation) private long test() { Если Вы тестируете for(int i = 0; i < N; i++) { // разогрев апплет, который будет исполняться только один func(); // тестируемы метод раз, то Вы получите } слишком оптимистичный результат!!! long time = System.nanoTime(); for(int i = 0; i < N; i++) { func(); // тестируемы метод } long endTime = System.nanoTime(); double avgTime = ((double)(endTime – startTime)) / N; return (long) (1000000000d / avgTime); // Кол-во операций в секунду } 16 Бенчмарки как критерий естественного отбора
  • 17. Специфика Java - JIT (Just In Time compilation) private long test() { for(int i = 0; i < N; i++) { // разогрев private void func() { func(); // тестируемы метод double x = Math.sqrt(2012d); } } long time = System.nanoTime(); for(int i = 0; i < N; i++) { func(); // тестируемы метод } long endTime = System.nanoTime(); double avgTime = ((double)(endTime – startTime)) / N; return (long) (1000000000d / avgTime); // Кол-во операций в секунду } Результат вычислений нигде не используется, JIT может просто выбросить этот код. 17 Бенчмарки как критерий естественного отбора
  • 18. Заключение • Используйте бенчмарки для оценки производительности • Оценивайте релевантность бенчмарки Вашим целям • Используете бенчмарки, которые признаны или которым Вы целиком доверяете • Критически относитесь к результатам бенчмарок, которые получены из недостоверных источников • Если Вы создаете свой бенчмарк: • Убедитесь, что бенчмарк реально тестирует, то что Вы ожидаете • Убедитесь, что тестирумый код реально работает • Сравните полученный результат с ожиданием • Проверьте бенчмарк в разных условиях и сравните результаты • Объясните и докажите себе, что полученный результат действительно правильный 18 Бенчмарки как критерий естественного отбора
  • 19. Вопросы 19 Бенчмарки как критерий естественного отбора