Re: [PATCH] Small optimization across postgres (remove strlen duplicate usage)

From: Ranier Vilela <ranier(dot)vf(at)gmail(dot)com>
To: David Rowley <dgrowleyml(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 02:57:59
Message-ID: CAEudQArL0oaM=Rx9UetpLTEQ=yeT0DEAKSqHibhDbFAacbQh+w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Em dom., 19 de abr. de 2020 às 22:00, David Rowley <dgrowleyml(at)gmail(dot)com>
escreveu:

> 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.
>
I guess you're right.

x86-64 clang (trunk) -O2
f1:
int cmp(const char * name)
{
return strlen(name) == 0;
}

cmp: # @cmp
xor eax, eax
cmp byte ptr [rdi], 0
sete al
ret

f2:
int cmp(const char * name)
{
return name[0] == '\0';
}

cmp: # @cmp
xor eax, eax
cmp byte ptr [rdi], 0
sete al
ret

Is the same result in assembly.
Well, it doesn't matter to me, I will continue to use str[0] == '\0'.

Thanks for take part.

regards,
Ranier VIlela

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Dilip Kumar 2020-04-20 04:10:28 Re: fixing old_snapshot_threshold's time->xid mapping
Previous Message Amit Kapila 2020-04-20 02:48:22 Re: where should I stick that backup?