Pádraig Brady <[email protected]> writes:

>   $ ./configure --without-libgmp --quiet
>   $ dd bs=64k count=1 if=/dev/urandom of=58.in
>
>   $ time src/basenc-before --base58 58.in >/dev/null
>   real        0m6.588s
>
>   $ time src/basenc-after --base58 58.in >/dev/null
>   real        0m3.463s
>
> * src/basenc.c (base58_encode): Remove an affirm that is very expensive
> in the minigmp implementation.  Essentially the same affirm was done
> at the start of the function anyway.
> ---
>  src/basenc.c | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/src/basenc.c b/src/basenc.c
> index a9c9f2f30..8aaef0d8b 100644
> --- a/src/basenc.c
> +++ b/src/basenc.c
> @@ -1289,7 +1289,6 @@ base58_encode (char const *data, size_t data_len,
>    if (data_len - zeros)
>      {
>        mpz_import (num, data_len - zeros, 1, 1, 0, 0, data + zeros);
> -      affirm (mpz_sizeinbase (num, 58) + 1 <= *outlen);
>        for (p = mpz_get_str (p, 58, num); *p; p++)
>          *p = gmp_to_base58[to_uchar (*p)];
>      }

Nice catch on that and the other patch to mini-gmp.

By the way, today I found out Gentoo's coreutils package uses mini-gmp
by default. It looks like Sam is looking to change that, though [1]. I
wonder if any other distributions choose to use mini-gmp for some
reason.

Collin

[1] 
https://archives.gentoo.org/gentoo-dev/bf22d6afd355e01a4c1479ab2b21076f75468578.1790430550.git....@gentoo.org/

Reply via email to