Книга: Системное программирование в среде Windows
Копирование файлов
Копирование файлов
Пять различных вариантов реализации программ копирования файлов использовались для копирования файла размером 25,6 Мбайт (400 000 записей размером 64 байта каждая, сгенерированных с помощью программы RandFile из главы 5). В первых двух столбцах табл. В.1 представлены результаты, полученные на лэптопе (LT) устаревшей модели, в котором установлен процессор Pentium с частотой 500 МГц, что позволяет сопоставить между собой показатели производительности в случае файловых систем NTFS и FAT.
1. Программа cpC (программа 1.1) использует библиотеку С. В этом тесте измеряется эффект варианта реализации, выполняющегося поверх Windows, хотя библиотека и предоставляет возможность использования эффективной буферизации или применения других методик.
2. Программа cpW (программа 1.2) является реализацией, в которой используются непосредственно средства Windows с буфером небольшого размера (256 байт).
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 |
- Резервное копирование многофайловых баз данных
- Восстановление из резервных копий многофайловых баз данных
- Перемещение и копирование файлов и папок
- Копирование файлов сервера
- Копирование системных файлов
- Пример: копирование нескольких файлов на стандартное устройство вывода
- Копирование файлов с использованием стандартной библиотеки С
- Копирование файлов с использованием Windows
- Копирование файлов с использованием вспомогательной функции Windows
- 8.3. Копирование мультимедийных файлов
- Создание, копирование и перемещение файлов и каталогов
- 12.2 Копирование, перемещение и удаление файлов