Как стать автором
Обновить
0

Бесплатные обеды закончились на практике

Время на прочтение3 мин
Количество просмотров14K
Есть достаточно известная статья Герба Саттера "The Free Lunch Is Over. A Fundamental Turn Toward Concurrency in Software". В ней говорится, что не стоит более надеяться на рост тактовой частоты микропроцессоров. Для повышения производительности программ теперь необходимо использовать несколько ядер в микропроцессоре. Хотя статья написана в 2005 году, до настоящего времени она для меня была скорее теоретической, чем практическим руководством к действию. Ранее я всегда получал ускорение, приобретая новый компьютер. Но вот настал тот момент, когда этого не произошло.
image
Рисунок 1 — Время работы unit-тестов на моей старой и новой машине.

Разрабатывая проект PVS-Studio, мы регулярно используем тесты, время выполнения которых на моей машине с двумя ядрами составляло порядка 90 минут. Это не очень долго, но в обед уже не укладывается. Работа PVS-Studio заключается в анализе исходного кода на языке Си/Си++ и выдаче дополнительных предупреждений пользователям Visual Studio 2005/2008, там, где их программа может быть некорректна для 64-битных или параллельных систем. При этом основным потребляемым ресурсом является количество и скорость ядер, а также объем оперативной памяти. Классическая счетная задача. Кроме того, мне иногда не хватало 4 Гбайт памяти для экспериментов с 64-битными ошибками, возникающими при обработке больших массивов. Одним словом, захотелось чуть более мощную рабочую машину :-).

Было:
Intel® Core™2 Duo Processor E7200, 2.40 Ghz, 4Gb, 64-bit. Операционная система Windows Vista 64-bit.

Стало:
Intel® Core™2 Quad Processor Q9400, 2.66 Ghz, 8Gb, 64-bit. Операционная система Windows 7 64-bit.

Остальные параметры приводить смысла нет. Видеокарты хоть и различные, на скорость статического анализа кода, это никак не влияет. Жесткие диски разного объема, но одинакового класса.

А теперь приступим к сравнению этих систем. Сразу подчеркну, что анализ однобокий и не может отражать целой картины. Целью не являлось точно сравнить производительность двух процессоров. Я исследовал скорость решений той задачи, которая мне интересна.

Для начала я сравнил скорость работы внутренних юнит-тестов. Юнит-тесты используют только одно ядро, но я ожидал увидеть небольшой прирост производительности за счет чуть более высокой тактовой частоты. Результат оказался прямо противоположным!
image
Рисунок 2 – Замеры скорости работы unit-тестов 64-битной версии анализатора. Приведено среднее время работы по 5 проведенным запускам.

Я не знаю, чем вызван такой провал производительности. Поэтому комментировать этот замер не буду.

Данный эксперимент может быть достаточно неточным. Перейдем к настоящим испытаниям. Сравним скорость работы больших тестов:
image
Рисунок 3 – Запуск длительных тестов, в ходе которого проверяется 32 программных проекта. В процессе тестирования участвует компилятор Visual C++, анализатор PVS-Studio и система сравнения выдаваемых результатов.

image
Рисунок 4 — Тоже самое, но в виде графика.

Если на новой системе использовать только два ядра, то скорость работы совпадает со скоростью работы на старой машине с двумя ядрами. Никакого ускорения за счет более высокой частоты ядра нет. При использовании четырех ядер результат значительно лучше. Цель достигнута — тесты укладываются в один час. То, что ускорение происходит не в два раза связано с тем, что процесс тестов не полностью параллелен и содержит последовательные процедуры.

Я не хочу строить теории, почему получены именно такие данные по замерам скорости и в чем может быть ошибка. Я хочу сказать, что пришло то самое время, когда халява закончилась. Приобретая новый компьютер с большим количеством ядер, не стоит надеяться, что старые программы будут работать на нем быстрее. Преимущество можно получить только от использования программ, которые умеют использовать несколько ядер.
Теги:
Хабы:
Всего голосов 59: ↑44 и ↓15+29
Комментарии79

Публикации

Информация

Сайт
www.intel.ru
Дата регистрации
Дата основания
Численность
5 001–10 000 человек
Местоположение
США
Представитель
Анастасия Казантаева

Истории