S
S
sivabur2015-11-05 18:55:38
C++ / C#
sivabur, 2015-11-05 18:55:38

How to write a file to disk bypassing the file system (to speed up)?

How to write a file to disk bypassing the file system (to speed up)?
Is this possible? Will it give an increase in speed?

Answer the question

In order to leave comments, you need to log in

5 answer(s)
A
Adamos, 2015-11-05
@Adamos

Anything that can be implemented to speed up file writing is usually already implemented in the file system driver.
All the problems that were solved by the developers of this driver will become yours if you are going to do without it.
In addition, you lose two layers of abstraction at once: when writing a file using the OS, you may not be interested in what file system it will be written to and whether it will be local at all - the OS and drivers will deal with this.
Well, let's not forget that in an OS with normal security settings, a user program cannot just take it and turn directly to the hardware.
In general, do not engage in nonsense. Even the knowledge that you can gain by studying this issue now will not be useful to you in the foreseeable future.

V
Vladimir Martyanov, 2015-11-05
@vilgeforce

Files - the concept of a file system. What are files without a file system?

O
Oleg Tsilyurik, 2015-11-05
@Olej

How to write a file to disk bypassing the file system (to speed up)?
Is this possible? Will it give an increase in speed?.

Recording data (not files!) was used in some real-time DBMSs, specifically for acceleration.
But nothing will come of it:
- it requires huge software support, which is acceptable only for an industrially developed software product (with a good team and years of development)
- with a simplified implementation "on the knee" you will only lose speed due to the rejection of all file system cache levels.

Станислав Макаров, 2015-11-05
@Nipheris Куратор тега C++

https://toster.ru/answer?answer_id=692948
А вообще правильно вам тут пишут - ФС делали далеко не глупые люди. Если хотите максимально увеличить производительность - лучше выделите:
а) отдельный раздел с отдельной файловой системой для ваших данных
б) поставьте RAID, не говоря уж об SSD
Алгоритмы кэширования в ОС сейчас достаточно развиты, люди десятилетиями их разрабатывали.
А насчет возможно - да пожалуйста. В *nix открываете файл дивайса в /dev и работаете. В винде - аналогично: права администратора, открываете нужный дивайс и вперед, блоками читаем и пишем, через WinAPI.

D
DmitryBB, 2019-02-14
@DmitryBB

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

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question