Re: [PATCH] helper/test-genzeros: allow more than 2G zeros in Windows
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Oct 28, 2021, 20:32 UTC
- Message-ID
- <nycvar.QRO.7.76.6.2110282229280.56@tvgsbejvaqbjf.bet>
- In-Reply-To
- <20211028085446.78536-1-carenas@gmail.com>
Hi Carlo,
On Thu, 28 Oct 2021, Carlo Marcelo Arenas Belón wrote:
Show 9 quoted lines
> d5cfd142ec (tests: teach the test-tool to generate NUL bytes and > use it, 2019-02-14), add a way to generate zeroes in a portable > way without using /dev/zero (needed by HP NonStop), but uses a > long variable that is limited to 2^31 in Windows. > > Use instead a (POSIX/C99) intmax_t that is at least 64bit wide > in 64-bit Windows to use in a future test. > > Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
Thank you for this patch. I integrated it into the patch series.
Unfortunately, it is incomplete, not because it does not work, but because it comes at a hefty performance cost. In my tests, generating a gigabyte of NULs took around 27 seconds with `genzeros`. Compare that to ~0.75 seconds with `dd`, and it is not funny, stop laughing.
Happily, I was able to rewrite the core part of `genzeros` to write chunks of a 256kB array instead, which pushed it back down to ~0.6 seconds.
Will send out a new iteration as soon as the CI build passes.
Ciao, Dscho
Show 30 quoted lines
> ---
> t/helper/test-genzeros.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/t/helper/test-genzeros.c b/t/helper/test-genzeros.c
> index 9532f5bac9..b1197e91a8 100644
> --- a/t/helper/test-genzeros.c
> +++ b/t/helper/test-genzeros.c
> @@ -3,14 +3,14 @@
>
> int cmd__genzeros(int argc, const char **argv)
> {
> - long count;
> + intmax_t count;
>
> if (argc > 2) {
> fprintf(stderr, "usage: %s [<count>]\n", argv[0]);
> return 1;
> }
>
> - count = argc > 1 ? strtol(argv[1], NULL, 0) : -1L;
> + count = argc > 1 ? strtoimax(argv[1], NULL, 0) : -1;
>
> while (count < 0 || count--) {
> if (putchar(0) == EOF)
> --
> 2.33.0.1155.gbdb71ac078
>
>
>