3. Программа cpwFA — "быстрый" вариант реализации с использованием буфера большого размера (8192 байта, что кратно размеру сектора диска на всех хост-системах) и флагов Windows, задающих последовательный режим обработки как для входных, так и для выходных файлов.
4. Программа cpCF (программа 1.3) использует функцию Windows CopyFile для выяснения того, является ли реализация, ограничивающаяся единственным системным вызовом, более эффективной по сравнению с другими методиками.
5. Программа cpUC (программа 1.1) — реализация в стиле UNIX, использующая буфер небольшого размера (аналогично программе cpW). Эта программа была незначительно изменена, чтобы обеспечить возможность использования библиотеки совместимости с UNIX, входящей в состав Visual C++.
В то время как приведенные результаты представляют величины, усредненные по пяти тестовым запускам, сами значения истекшего времени могут меняться в широких пределах. Так, для программы cpUC (последний ряд) среднее значение истекшего времени в третьем столбце данных (Pentium LT, W2000) составило 7,77 секунды, тогда как минимальное и максимальное значения составляли соответственно 1,87 и 11,71 секунды. Такая широкая вариация значений была типичной почти во всех случаях и на всех системах.
Комментарии
1. Применение файловой системы NTFS вовсе не гарантирует лучшую по сравнению с системой FAT производительность. Более того, иногда более быстрой оказывается именно FAT, в чем можно убедиться, сравнивая данные, приведенные в столбцах 1 и 2.
2. Библиотеки совместимости С и UNIX обеспечивают сопоставимую производительность, которая во многих случаях превосходит производительность простейших вариантов реализации, использующих средства Windows.
3. Процессорное время, потребляемое как функциями ядра ("Системное время"), так и пользовательскими функциями ("Пользовательское время"), является минимальным. Следовательно, быстродействие процессора оказывает лишь самое незначительное влияние на производительность, оцениваемую по истекшему времени.
4. Как и следовало ожидать, высокопроизводительные серверные SMP-системы действительно обеспечивают гораздо более быструю обработку файлов, чем лэптопы и PC. Дополнительные тесты, выполненные в системе Windows Server 2003, обладающей еще более высоким быстродействием, показали еще лучшие результаты (здесь они не представлены), причем значения истекшего времени оказались примерно в два раза меньшими по сравнению со значениями, приведенными в крайнем справа столбце таблицы.
5. Использование буферов большого размера, флагов последовательной обработки или функции CopyFile не обеспечивают систематического или существенного выигрыша в производительности, оцениваемой по истекшему времени. Вместе с тем, весьма небольшие значения показателей пользовательского времени для программ cpwFA и cpCF представляют интерес, и этим можно воспользоваться в некоторых ситуациях, даже если показатели истекшего времени при этом не улучшатся. Одна из систем, а именно, лэптоп с процессором Pentium, не подходит под данное обобщение. Как ранее уже отмечалось, процессорное время составляет лишь небольшую долю истекшего времени.
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
Читать дальше