Skip to content

Commit

Permalink
ZSTD CLI: Use buffered output for improved performance
Browse files Browse the repository at this point in the history
  • Loading branch information
yoniko committed Jan 8, 2022
1 parent eebf24b commit df5013b
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions programs/fileio.c
Original file line number Diff line number Diff line change
Expand Up @@ -718,6 +718,17 @@ FIO_openDstFile(FIO_ctx_t* fCtx, FIO_prefs_t* const prefs,
if (f == NULL) {
DISPLAYLEVEL(1, "zstd: %s: %s\n", dstFileName, strerror(errno));
}
/* An increased buffer size can provide a significant performance boost on some platforms.
* Note that providing a NULL buf with a size that's not 0 is not defined in ANSI C, but is defined
* in an extension. There are three possibilities here -
* 1. Libc supports the extended version and everything is good.
* 2. Libc ignores the size when buf is NULL, in which case everything will continue as if we didn't
* call `setvbuf`.
* 3. We fail the call and execution continues but a warning message might be shown.
* In all cases due execution continues. For now, I believe that this is a more cost-effective
* solution than managing the buffers allocations ourselves (will require an API change). */
if(setvbuf(f, NULL, _IOFBF, 1 MB))
DISPLAYLEVEL(2, "Warning: setvbuf failed for %s\n", dstFileName);
return f;
}
}
Expand Down

0 comments on commit df5013b

Please sign in to comment.