diff options
author | Tim Schumacher <timschumi@gmx.de> | 2023-04-04 17:25:19 +0200 |
---|---|---|
committer | Tim Flynn <trflynn89@pm.me> | 2023-04-05 07:30:38 -0400 |
commit | 3ec513ecf21b2ec8b64c8548e9bb5b4173eb7a5f (patch) | |
tree | e7608e9a6ccc1c6d869c8faf964c1c3da9c87b18 /Userland | |
parent | 7000ccf89fd6b5f4bfb2fc67bd5ca1a6ad8e2c7a (diff) | |
download | serenity-3ec513ecf21b2ec8b64c8548e9bb5b4173eb7a5f.zip |
xzcat: Use BufferedFile for reading inputs
This improves the decompression time of `clang-15.0.7.src.tar.xz` from
41 seconds down to about 5 seconds.
The reason for this very significant improvement is that LZMA, the
underlying compression of XZ, fills its range decompressor one byte at a
time, causing a lot of overhead at the syscall barrier.
Diffstat (limited to 'Userland')
-rw-r--r-- | Userland/Utilities/xzcat.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Userland/Utilities/xzcat.cpp b/Userland/Utilities/xzcat.cpp index 81ffe61a45..19837711e8 100644 --- a/Userland/Utilities/xzcat.cpp +++ b/Userland/Utilities/xzcat.cpp @@ -22,7 +22,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) args_parser.parse(arguments); auto file = TRY(Core::File::open_file_or_standard_stream(filename, Core::File::OpenMode::Read)); - auto stream = TRY(Compress::XzDecompressor::create(move(file))); + auto buffered_file = TRY(Core::BufferedFile::create(move(file))); + auto stream = TRY(Compress::XzDecompressor::create(move(buffered_file))); // Arbitrarily chosen buffer size. Array<u8, 4096> buffer; |