Re: [PATCH] Small optimization across postgres (remove strlenduplicate usage) - Mailing list pgsql-hackers

From Ranier Vilela
Subject Re: [PATCH] Small optimization across postgres (remove strlenduplicate usage)
Date
Msg-id CAEudQApTrxtDtF5BkhikFXimY9Fk6zgKeqaeGgjoJNEsiH5a7A@mail.gmail.com
Whole thread Raw
In response to Re: [PATCH] Small optimization across postgres (remove strlenduplicate usage)  (David Rowley <dgrowleyml@gmail.com>)
Responses Re: [PATCH] Small optimization across postgres (remove strlenduplicate usage)
List pgsql-hackers
Em dom., 19 de abr. de 2020 às 19:00, David Rowley <dgrowleyml@gmail.com> escreveu:
On Mon, 20 Apr 2020 at 09:38, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> The cases where Ranier proposes to replace strlen(foo) == 0
> with a test on foo[0] do seem like wins, though.  Asking for
> the full string length to be computed is more computation than
> necessary, and it's less clear that the compiler could be
> expected to save you from that.  Anyway there's a coding style
> proposition that we should be doing this consistently, and
> certainly lots of places do do this without using strlen().

Looking at https://godbolt.org/z/6XsjbA it seems like GCC is pretty
good at getting rid of the strlen call even at -O0. It takes -O1 for
clang to use it and -O2 for icc.
I tried: https://godbolt.org with:

-O2:

f1:
int main (int argv, char **argc)
{
    return strlen(argc[0]) == 0;
}

f1: Assembly
main:                                   # @main
        mov     rcxqword ptr [rsi]
        xor     eaxeax
        cmp     byte ptr [rcx], 0
        sete    al
        ret

f2:
int main (int argv, char **argc)
{
    return argc[0] == '\0';
}

f2: Assembly

main:                                   # @main
        xor     eax, eax
        cmp     qword ptr [rsi], 0
        sete    al
        ret

For me clearly str [0] == '\ 0', wins.

regards,
Ranier Vilela

pgsql-hackers by date:

Previous
From: Peter Geoghegan
Date:
Subject: Re: v13: Performance regression related to FORTIFY_SOURCE
Next
From: Ranier Vilela
Date:
Subject: Re: [PATCH] Small optimization across postgres (remove strlenduplicate usage)