From: | David Rowley <dgrowleyml(at)gmail(dot)com> |
---|---|
To: | Ranier Vilela <ranier(dot)vf(at)gmail(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: [PATCH] Small optimization across postgres (remove strlen duplicate usage) |
Date: | 2020-04-20 01:00:40 |
Message-ID: | CAApHDvq_-Q4U4uYUKud2KoD2OqO_DM+isDMGw3ccJq7EiM3hog@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, 20 Apr 2020 at 11:24, Ranier Vilela <ranier(dot)vf(at)gmail(dot)com> wrote:
> I tried: https://godbolt.org with:
>
> -O2:
>
> f1:
> int main (int argv, char **argc)
> {
> return strlen(argc[0]) == 0;
> }
>
> f1: Assembly
> main: # @main
> mov rcx, qword ptr [rsi]
> xor eax, eax
> 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.
I think you'd want to use argc[0][0] == '\0' or *argc[0] == '\0'.
Otherwise you appear just to be checking if the first element in the
argc pointer array is set to NULL, which is certainly not the same as
an empty string.
David
From | Date | Subject | |
---|---|---|---|
Next Message | Jeff Davis | 2020-04-20 02:48:14 | Re: v13: Performance regression related to FORTIFY_SOURCE |
Previous Message | Tomas Vondra | 2020-04-19 23:47:29 | Re: sqlsmith crash incremental sort |