Поиск заданных комбинаций символов
Тестирование производительности путем выполнения поиска определенных текстовых шаблонов в содержимом файлов производилось с использованием трех различных методов, что позволило оценить сравнительную эффективность многопоточного и многопроцессного режимов, а также простой последовательной обработки файлов (см. табл. В.З).
1. Программа grepMP (программа 6.1) использует параллельные процессы, каждый из которых обрабатывает отдельный файл. Результаты измерений системного и пользовательского времени не приводятся, поскольку программа timep позволяет хронометрировать лишь родительские процессы.
2. Программа grepMT (программа 7.1) использует параллельные потоки.
3. Программа grepSQ — это пакетный файл DOS, обеспечивающий выполнение поиска шаблонов по очереди в каждом из файлов. В этом случае также приводятся только результаты, относящиеся к реальному времени.
В этом тесте использовались 20 файлов с размерами в пределах от нескольких Кбайт до 1 Мбайт.
Комментарии
1. В большинстве случаев все три методики приводят к близким результатам на однопроцессорных системах. Исключением является лэптоп с процессором Pentium, для которого версия grepMP систематически оказывалась самой медленной.
2. Многопоточный режим обладает лишь незначительными преимуществами по сравнению с многопроцессным даже на однопроцессорных системах.
3. Показатели пользовательского и системного времени имеют ощутимо заметные значения лишь в случае многопоточных версий
4. SMP-системы демонстрируют выигрыш в производительности, который достигается и при использовании многопоточного режима или нескольких однопоточных процессов. Заметьте, что общее пользовательское время превышает реальное время, поскольку характеризует одновременно все четыре процесса.
5. Тот факт, что последовательная обработка файлов приводит на однопроцессорных системам к аналогичным результатам, говорит о том, что простейшее решение нередко оказывается и самым лучшим.
Таблица В.З. Показатели производительности программ поисказаданных комбинаций символов
| ЦП | Pentium LT | Celeron LT | Xeon | 4×Xeon |
---|
ОС | W2000 | XP | W2000 | W2000 |
---|
Файловая система | NTFS | NTFS | NTFS | NTFS |
---|
grepMP | Реальное время | 14,72 | 3,95 | 10,58 | 0,63 |
Пользовательское время | - | - | - | - |
Системное время | - | - | - | - |
grepMT | Реальное время | 7,08 | 3,61 | 8,09 | 0,73 |
Пользовательское время | 0,30 | 0,41 | 0,27 | 2,23 |
Системное время | 0,09 | 0,47 | 0,13 | 0,28 |
grepSQ | Реальное время | 6,71 | 3,86 | 6,71 | 0,97 |
Пользовательское время | - | - | - | - |
Системное время | - | - | - | - |
Для тестирования четырех вариантов реализации программ сортировки из главы 5 использовался целевой файл, состоящий из 100 000 записей размером 64 байта каждая (всего 6,4 Мбайт). Вывод отсортированного файла во всех случаях подавлялся, чтобы можно было оценивать только время, необходимое для выполнения собственно сортировки. После этого тестировалась многопоточная сортировка (программа 7.2) файла размером 25 Мбайт, состоящего из 400 000 записей размером 64 байта каждая, с использованием одной, двух и четырех потоков. В каждом отдельном запуске использовался отдельный файл, генерируемый программой RandFile, которая находится в каталоге главы 5. Результаты для разных запусков заметно различались между собой.