![]() |
|
Модераторы: bsa |
![]()
|
|
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: 3 Всего: 5 |
volatile, как-то можно от нее избавится? я просто хочу избежать фрагментации файлов, а получается что просто ничего не делаю.
оказалось мой подход дает тот же результат, т.е. открываю файл (или создаю) делаю seek на нужный размер - 1, пишу ноль, в результате файл нужного размера заполненный нолями. |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
asmdzen, там может и не sparse file. По умолчанию эта фича выключена. Наоборот чтобы включить надо сделать кое-какие движения.
Если же к первоначальному вопросу про нефрагментированный файл, то в МСДН есть инфа как создать нефрагментированный файл средствами winapi. Начните отсюда но не знаю. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
мне кажется, вы заблуждаетесь. если для файла зарезервировано некое кол-во блоков, то никакой другой файл их занять не сможет. это и есть способ избежать/уменьшить фрагментацию. asmdzen, эта тема затянулась на три страницы, а я так и не могу понять чего конкретно ты пытаешься добиться, и почему постоянно это "добивание" у тебя новое Это сообщение отредактировал(а) boostcoder - 30.7.2011, 11:33 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Насчет того что там "sparse file" - возможно. Я просто хотел сказал что есть такая фича, и про нее забывать не стоит. Посмотреть/поменять атрибут "sparse file" можно в файловых менеджерах. Например FAR позволяет это сделать для любого файла.
Даже если вы реально заняли какое-то кол-во блоков, не факт что эти блоки расположены не фрагметнировано. Система сама определяет какие блоки выделить для файла, и повлиять на этот выбор стандартными средствами, имхо, нельзя. |
|||
|
||||
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: 3 Всего: 5 |
пишутся несколько тон файлов сразу, кусками по несколько КБ, если я просто создам эти файлы и начну писать то у меня такое подозрение что система их хорошенько перемешает. Насколько я понял в NTFS файл разделен на блоки размером в 64КБ, получается 64КБ от одного файла, следующие от другого, меня это не устраивает, хочется записывать файлы с минимум фрагментов. не понял вопрос, или это не вопрос )
все же, IMO, если зарезервировать для файлов весь размер сразу то фрагментации будет меньше. Добавлено через 6 минут и 27 секунд поведение как у sparse файлов, т.е. весь файл как бы заполнен нолями, но при попытке растянуть файл на 100ГБ при свободных 50 работать не хочет, со sparse файлами вроде должно было прокатить. |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: 3 Всего: 5 |
наконец то положительный результат )) вернул размер до байта. в общем я хочу написать класс для буферизированной записи файлов на диск с минимальным обращением к диску и минимальным уровнем фрагментации (и минимальными задержками при записи, для этого делаю отдельный тред). Может мне следовало сперва спросить если нет уже готового решения ) |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
asmdzen, посмотрите как это делается в бусте
Подробнее здесь. Можете взять и переделать как вам будет удобно, без лишнего закрытия/открытия файлов. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
это ясно. я лишь хотел сказать, что зарезервированное пространство для файла, не значит что оно sparse. |
|||
|
||||
| asmdzen |
|
||||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: 3 Всего: 5 |
не хочется под винду именно писать, к тому же мой вариант не на много хуже:
результат такой же как от boost::resize_file, по крайней мере я разницы не вижу. |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |