sivabur
@sivabur
Заблокировали просто так!

Как записать файл на диск в обход файловой системы(для ускорения)?

Как записать файл на диск в обход файловой системы(для ускорения)?
Возможно ли такое?Даст ли прирост в скорости?.Где то мельком читал что возможно ну там имелось виду sysbase(может не так написал)
  • Вопрос задан
  • 573 просмотра
Пригласить эксперта
Ответы на вопрос 5
Adamos
@Adamos
Все, что можно реализовать для ускорения записи файлов, обычно уже реализовано в драйвере файловой системы.
Все проблемы, которые были решены разработчиками этого драйвера, станут вашими, если вы собрались без него обойтись.
Кроме того, вы теряете сразу два слоя абстракции: записывая файл средствами ОС, вы можете не интересоваться, в какой файловой системе он будет записан и будет ли она вообще локальной - с этим разберутся ОС и драйверы.
Ну, и не забываем, что в ОС с нормальными настройками безопасности пользовательская программа не может просто так вот взять и обратиться напрямую к "железу".

В общем, не занимайтесь ерундой. Даже те знания, которые вы можете обрести, изучая сейчас этот вопрос, вам в обозримом будущем не пригодятся.
Ответ написан
Комментировать
@vilgeforce
Раздолбай и программист
Файлы - понятие файловой системы. Какие файлы без файловой системы?
Ответ написан
Комментировать
Olej
@Olej
инженер, программист, преподаватель
Как записать файл на диск в обход файловой системы(для ускорения)?
Возможно ли такое?Даст ли прирост в скорости?.

Запись данных (не файлов!) использовалась в некоторых СУБД реального времени, именно для ускорения.
Но у вас из этого ничего не выйдет:
- это требует огромной программной поддержки, которая допустима только для промышленно развиваемого программного продукта (с хорошей командой и годами развития)
- при упрощённой реализации "на коленке" вы только потеряете в скорости за счёт отказа от всех уровней кэширования файловых систем.
Ответ написан
Комментировать
Nipheris
@Nipheris Куратор тега C++
https://toster.ru/answer?answer_id=692948

А вообще правильно вам тут пишут - ФС делали далеко не глупые люди. Если хотите максимально увеличить производительность - лучше выделите:
а) отдельный раздел с отдельной файловой системой для ваших данных
б) поставьте RAID, не говоря уж об SSD
Алгоритмы кэширования в ОС сейчас достаточно развиты, люди десятилетиями их разрабатывали.

А насчет возможно - да пожалуйста. В *nix открываете файл дивайса в /dev и работаете. В винде - аналогично: права администратора, открываете нужный дивайс и вперед, блоками читаем и пишем, через WinAPI.
Ответ написан
@DmitryBB
Когда-то давным-давно, больше 10 лет назад, на XP писал свою функцию эффективной записи файлов. И что точно выяснил, на запись влияют больше всего "механические" ограничения винчестера. И наиболее эффективный ход - писать большие объёмы информации через большой буфер. Всё логично: одна команда записать сразу 10МБ использует гораздо меньше операций типа "найти свободное место" и по полной использует оптимизацию системы и самого винчестера.
С большим буфером на XP получался очень существенный выигрыш по скорости в сравнении со стандартным копированием explorerа. Сейчас же стандартное копирование не уступает той же TeraCopy, но это не означает, что буфер 10кБ будет записываться на высокой скорости.

Кстати, в XP мне были доступны через Win Api более низкоуровневые функции работы с файлами. В них можно было поставить несколько флагов типа отключения буфера на уровне системы. Существенного ускорения они не дали, где-то может и замедление.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы