Системное программирование в среде Windows
Шрифт:
4. Программа sortMM (программа 5.5) создает постоянно существующий индексный файл.
5. Программа sortMT (программа 7.2) реализует многопоточную сортировку слиянием. Результаты представлены в строках sortMT1, sortMT2 и sortMT4 в соответствии с количеством параллельных потоков. Результаты могут значительно меняться в зависимости от характера сортируемых данных, хотя размер и случайный характер распределения значений данных сглаживают эти различия, что, как правило, характерно для базового алгоритма быстрой сортировки, который использован для реализации функции qsort библиотеки С.
1. Реализация, использующая алгоритм бинарного дерева (программа sortBT), интенсивно использует процессор; кроме того, память
2. Применение отображения файлов и чтение файла в предварительно выделенный буфер обеспечивают примерно одинаковую производительность, но в этих тестах отображение файлов ничем особенным себя не проявило, а в некоторых случаях даже значительно ухудшало результаты. Вместе с тем, в ряде случаев как sortFL, так и sortHP обеспечивали превосходные результаты.
3. Суммарное пользовательское и системное время иногда превышает истекшее время, даже если используется только один поток.
4. Программа sortMT демонстрирует возможности SMP-систем. В некоторых случаях использование дополнительных потоков приводило к повышению производительности и на однопроцессорных системах.
Таблица В.4. Показатели производительности программ сортировки файлов
ЦП | Pentium LT | Celeron LT | Xeon | 4×Xeon | |
---|---|---|---|---|---|
ОС | W2000 | XP | W2000 | W2000 | |
Файловая система | NTFS | NTFS | NTFS | NTFS | |
sortBT | Реальное время | – | 9,61 | – | – |
Пользовательское время | – | 1,84 | – | – | |
Системное время | – | 7,44 | – | – | |
sortFL | Реальное время | 11,15 | 0,78 | 1,74 | 5,38 |
Пользовательское время | 4,81 | 0,41 | 0,26 | 5,19 | |
Системное время | 0,15 | 0,09 | 0,09 | 0,02 | |
sortHP | Реальное время | 1,76 | 0,34 | 1,52 | 1,30 |
Пользовательское время | 1,62 | 0,22 | 0,15 | 1,28 | |
Системное время | 0,11 | 0,05 | 0,03 | 0,04 | |
sortMM | Реальное время | 0,99 | 1,44 | 1,92 | 1,39 |
Пользовательское время | 0,31 | 0,18 | 0,15 | 0,38 | |
Системное время | 0,68 | 0,47 | 0,36 | 1,03 | |
sortMT1 | Реальное время | 3,18 | 3,58 | 6,80 | 0,14 |
Пользовательское
| 0,01 | 0,95 | 0,01 | 0,05 | |
Системное время | 0,46 | 0,16 | 0,16 | 0,11 | |
sortMT2 | Реальное время | 2,10 | 1,22 | 6,70 | 0,13 |
Пользовательское время | 0,01 | 1,05 | 0,01 | 0,02 | |
Системное время | 0,40 | 0,16 | 0,16 | 0,13 | |
sortMT4 | Реальное время | 2,20 | 1,49 | 6,22 | 0,13 |
Пользовательское время | 0,01 | 1,18 | 0,01 | 0,12 | |
Системное время | 0,16 | 0,15 | 0,16 | 0,09 |
Множество потоков, соревнующихся между собой за обладание единственным ресурсом
Целью этой серии тестов являлось сравнение эффективности различных стратегий реализации функций управления очередями программы 10.4 с использованием программы 10.5 (трехступенчатый конвейер) в качестве тестового приложения. Тесты выполнялись на четырехпроцессорной (Intel Xeon, 1 ГГц) системе Windows 2000 Server с организацией 1, 2, 4, 8, 16, 32 и 64 потоков, но во всех семи случаях каждого потока поручалось выполнение 1000 единиц работы. В идеальном случае можно было бы ожидать линейного увеличения реального времени с увеличением количества потоков, но соревновательность между потоками за право владения единственным мьютексом (или объектом CS) может приводить к нелинейному снижению этого показателя). Обратите внимание, что эти тесты не затрагивают файловую систему.
Использовались шесть различных стратегий реализации, результаты применения которых представлены в отдельных столбцах табл. В.5.
Таблица В.5. Производительность многопоточных реализаций на четырехпроцессорном сервере