Системное программирование в среде Windows
Шрифт:
6. Показатели истекшего времени являются в высшей степени переменчивыми, причем в некоторых случаях отношение результатов, полученных в идентичных тестах, которые выполнялись в идентичных условиях, достигало значения 10:1.
Таблица В.1. Показатели производительности программ копирования файлов
ЦП | Pentium III | Pentium III | Pentium LT | Celeron LT | Xeon | 4×Xeon | |
---|---|---|---|---|---|---|---|
ОС | W2000 | W2000 | W2000 | XP | W2000 | W2000 | |
Файловая система | FAT | NTFS | NTFS | NTFS | NTFS | NTFS | |
cpC | Реальное
| 8,62 | 14,69 | 12,75 | 7,23 | 6,03 | 2,67 |
Пользовательское время | 0,12 | 0,12 | 0,10 | 0,10 | 0,09 | 0,06 | |
Системное время | 0,24 | 0,52 | 1,39 | 0,39 | 0,25 | 0,36 | |
cpW | Реальное время | 8,49 | 13,35 | 25,48 | 7,10 | 8,94 | 2,95 |
Пользовательское время | 0,13 | 0,12 | 0,06 | 0,04 | 0,04 | 0,13 | |
Системное время | 0,88 | 1,37 | 4,61 | 0,62 | 0,56 | 0,13 | |
cpwFA | Реальное время | 8,35 | 12,59 | 7,35 | 8,25 | 9,10 | 2,36 |
Пользовательское время | 0,01 | 0,02 | 0,03 | 0,01 | 0,01 | 0,02 | |
Системное время | 0,40 | 0,50 | 0,82 | 0,29 | 0,20 | 0,19 | |
cpCF | Реальное время | 8,00 | 11,69 | 2,57 | 6,50 | 7,62 | 2,97 |
Пользовательское время | 0,02 | 0,01 | 0,02 | 0,02 | 0,01 | 0,02 | |
Системное время | 0,19 | 0,25 | 0,53 | 0,19 | 0,12 | 0,17 | |
cpUC | Реальное время | 7,84 | 13,14 | 21,01 | 9,98 | 7,77 | 3,53 |
Пользовательское время | 0,72 | 0,66 | 0,47 | 0,34 | 0,34 | 0,42 | |
Системное время | 0,40 | 0,67 | 3,12 | 0,34 | 0,36 | 0,41 |
Преобразование символов из кодировки ASCII в Unicode
Измерения выполнялись для восьми программ, каждая из которых преобразовывала файл размером 12,8 Мбайт в файл размером 25,6 Мбайт. Соответствующие результаты представлены в табл. В.2.
1. Программа atou (программа 2.4) сопоставима с программой cpW, использующей буфер небольшого размера.
2. Программа atouSS — первый из "быстрых" вариантов реализации, основанных на программе atou. В нем применяются флаги последовательного режима обработки и буфер небольшого размера. Эта, а также две следующие программы сгенерированы на основе одного и того же проекта, atouLBSS, но с определением разных комбинаций макросов.
3. Программа atouLB использует буфер большого размера (8192 байта), но не использует флаги последовательного режима обработки.
4. Программа atouLSFP использует буфер большого размера и флаги последовательного режима обработки, но кроме этого предварительно устанавливает требуемый размер выходного файла. Эта мера продемонстрировала свою высокую эффективность.
5. Программа atouMM использует отображение файлов для операций файлового ввода/вывода и вызывает функции, листинг которых приведен в программе 5.3.
6. Программа atouMT представляет собой многопоточную реализацию приведенной в главе 14 программы, основанной на схеме множественной буферизации без применения асинхронного ввода/вывода.
7. Программа atouOV (программа 14.1) использует перекрывающийся ввод/вывод и не может выполняться на двух системах семейства Windows 9x.
8. Программа atouEX (программа 14.2) использует перекрывающийся ввод/вывод и не будет выполняться на двух системах семейства Windows 9x.
1. Результаты показывают, что применение буферов увеличенного размера и флагов последовательной обработки (а возможно, и сочетания этих факторов) обеспечивает некоторый выигрыш в производительности.
2. Предварительная установка размера выходного файла (atouLSFP) очень эффективна и приводит к резкому повышению производительности на всех однопроцессорных системах. В то же время, преимущества SMP-систем оказались весьма незначительными. Эту же методику можно было применить и в предыдущих примерах копирования файлов.
3. В этих примерах процессорное время составляет лишь незначительную долю общего времени.
4. Помимо того, что использование перекрывающегося ввода/вывода ограничивается системами Windows NT и его трудно программировать, он обеспечивает очень низкую производительность. Заметьте, что основная доля общего времени приходится не на пользовательское или системное время, а на реальное время. Создается впечатление, что в случае NT4 система испытывает трудности с планированием доступа к диску, и это препятствие нельзя было устранить путем изменения размера буфера (как большую, так и в меньшую сторону) до тех пор, пока не были использованы буферы размером 65 Кбайт. В NT5 эта проблема не возникает.
5. Ни расширенный ввод/вывод, ни многопоточный режим не обеспечивают сколько-нибудь заметного повышения производительности.
6. Использование отображения файлов в операциях ввода/вывода способно увеличивать производительность, обеспечивая ее повышение примерно на 30% по сравнению с остальными методами. Результаты для SMP-сервера оказались еще лучшими.
Таблица В.2. Показатели производительности программ преобразования символов из кодировки ASCII в Unicode
ЦП | Pentium III | Pentium III | Pentium LT | Celeron LT | Xeon | 4×Xeon |
---|