Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2013, 09:18   #1
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию Скорость записи файла (исследование)

Проводил исследования скорости записи файлов, с целью установления зависимости времени записи от количество файлов. Для работы с файлами использовал чистый WinAPI. Исследование проводилось на файлах разных размеров, типов и расширений. Хочу поделиться на мой взгляд интересными результатами исследования на примере одного файла (с другими файлами результаты идентичны в физическом смысле):
Файл: *.jpg;
Размер файла: 13376719 байт;
Количеств записанных байт увеличиваем по формуле Y=X^2, начиная с 64 байт. Максимальная длинна записи для этого файла составляет 8388608 байт. На исследование выносилось два параметра: Время записи, сек и скорость записи, байт/сек * 10^3. Скорость записи вычисляется как отношение количества записанных байт к общему времени записи.
Результаты исследования времени записи и скорости записи представлены на рисунках 1 и 2 соответственно.


Рис. 1 - Время записи.


Рис. 2 - Скорость записи.

Как видно из результатов исследования время записи плавно увеличивается до определенного момента, затем наблюдается резкое уменьшение времени, затрачиваемого на запись. Поведение скорости записи соответствует представленной картине, т.е. наблюдается падение скорости записи, затем резкое увеличение. Экстремум соответствует записи длинной в 65536 байт.
Обсуждение: С чем связанно такое поведение исследуемых параметров и что это за магия такая с числом 65536?
kta87 вне форума Ответить с цитированием
Старый 29.07.2013, 10:52   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Например, в системе нашелся еще один потребитель жесткого диска и немного подвинул ваш тест... или с методикой измерений что-то не то...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 29.07.2013, 11:05   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Есть внутренние буфера, и (насколько я помню) их размер кратен 256К.
Отсюда любая операция не кратная 256К требует лишних телодвижений.
waleri вне форума Ответить с цитированием
Старый 29.07.2013, 11:11   #4
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Может быть я ошибаюсь, но более "чистый" тест можно сделать только в однозадачной операционной системе. Разве жесткий диск не отвлекается на чтение/запись, инициированные другими приложениями?
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 29.07.2013, 13:07   #5
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

кэши записи в винде же, очистка кэшей.
галки в свойствах винта убирите (или обе поставте) и тестите снова.
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 29.07.2013, 13:28   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

А ещё через msconfig вырубить все сервисы и перейти в безопасный режим.
Человек_Борща вне форума Ответить с цитированием
Старый 29.07.2013, 13:44   #7
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Тесты не однократно повторялись результат не оспорим. Чистота эксперимента выдержана. (Я же писал разные файла...) Всегда замечено резкое увеличение скорости записи после длинны равной 65536.
Интересно рассуждение именно на эту тему. Есть подозрения, что ситуация схожа с геометрией HDD и секторами длинной в 512 байт. Только вот не понятно почему именно 65536...
waleri, почему 256 байт, поделитесь источником

Последний раз редактировалось kta87; 29.07.2013 в 13:47.
kta87 вне форума Ответить с цитированием
Старый 29.07.2013, 13:53   #8
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2kta87
Цитата:
Всегда замечено резкое увеличение скорости записи после длинны равной 65536
с чего ты взял, что данные физически сбрасываются на диск? скорей всего они в кеше сидят. файл открываешь с O_SYNC | O_DIRECT (или что там в винде)?

Цитата:
типов и расширений.
гениально.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 29.07.2013 в 13:56.
pproger вне форума Ответить с цитированием
Старый 29.07.2013, 14:24   #9
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2kta87

с чего ты взял, что данные физически сбрасываются на диск? скорей всего они в кеше сидят.
И какая разница? Диск или кеш. Суть в записи длинны байтов. Когда я работаю с файлом он полюбас в кеше, он же открыт! А по завершению записи закрывается. Сколько шагов от 64 до 65536? И о чем это говорит?
Цитата:
гениально.
Интеллектуальный флуд!
kta87 вне форума Ответить с цитированием
Старый 29.07.2013, 14:30   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

kta87, чем меньше ячейка тем проще и быстрее её записать. Читающая головка всего одна. Жесткий диск - это тоже файл. Но работает он совсем по другому, и одновременный доступ к этому файлу разрешен.

Цитата:
Только вот не понятно почему именно 65536...
Таков максимальный размер машинного слова 2^16 для архитектуры процессора x86, для x64 длинна составляет 2^32.

Последний раз редактировалось Человек_Борща; 29.07.2013 в 14:40.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Измерить скорость чтения и записи данных на диск testerka Общие вопросы .NET 2 18.11.2010 10:48
Низкая скорость записи на HDD Terran Компьютерное железо 7 15.10.2010 11:09
узнать программно скорость записи на диск smalsvoloch Общие вопросы Delphi 0 29.04.2010 10:33
Снизилась скорость записи на HDD (SATA) EducatedFool Компьютерное железо 12 06.03.2009 16:59
Скорость записи на флешку. DelphiMan Общие вопросы Delphi 2 31.01.2009 17:51