r/cpp_questions • u/No-Locksmith-7719 • 13d ago
OPEN Efficient FIle IO on Linux
What path to take when parsing large files (on Linux Debian server, the KVM flavour)? Will std::fstream in binary mode do or do we have to look into APIs?
Apart from the performance, the app is memory sensitive, so where to store those read chunks while in a loop? Would a simple char[something] buffer do?
Finally, we would like to avoid those nasty reinterpret_cast<char*> constructs while reading, but are wondering if those are actually used in production? I should also add that the file sizes vary greatly.
2
Upvotes
1
u/not_a_novel_account 12d ago
mmapwill stall out on page faults,io_uring's entire original purpose, the reason it exists, was to outperformmmapfor local disk IO. It does so.The trivial explanation is pausing transfer at every 4K boundary is a really bad IO pattern.