Re: trivial refactoring of WaitOnLock

From: "Qingqing Zhou" <zhouqq(at)cs(dot)toronto(dot)edu>
To: pgsql-patches(at)postgresql(dot)org
Subject: Re: trivial refactoring of WaitOnLock
Date: 2005-03-09 09:53:41
Message-ID: d0mhbg$1aj1$1@news.hub.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-patches


Yes, reduced one round of counting the length of new_status.

"Russell Smith" <mr-russ(at)pws(dot)com(dot)au>
> If the problem is speed, then this may be faster.
>
>
> Index: src/backend/storage/lmgr/lock.c
> ===================================================================
> RCS file: /projects/cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v
> retrieving revision 1.147
> diff -c -r1.147 lock.c
> *** src/backend/storage/lmgr/lock.c 1 Mar 2005 21:14:59 -0000
1.147
> --- src/backend/storage/lmgr/lock.c 9 Mar 2005 08:17:33 -0000
> ***************
> *** 1074,1079 ****
> --- 1074,1080 ----
> ResourceOwner owner)
> {
> LockMethod lockMethodTable = LockMethods[lockmethodid];
> + int len;
> char *new_status,
> *old_status;
>
> ***************
> *** 1083,1091 ****
> locallock->lock, locallock->tag.mode);
>
> old_status = pstrdup(get_ps_display());
> ! new_status = (char *) palloc(strlen(old_status) + 10);
> strcpy(new_status, old_status);
> ! strcat(new_status, " waiting");
> set_ps_display(new_status);
>
> awaitedLock = locallock;
> --- 1084,1093 ----
> locallock->lock, locallock->tag.mode);
>
> old_status = pstrdup(get_ps_display());
> ! len = strlen(old_status);
> ! new_status = (char *) palloc(len + 9);
> strcpy(new_status, old_status);
> ! strcpy(&new_status[len], " waiting");
> set_ps_display(new_status);
>
> awaitedLock = locallock;
>
>
>
>
>
>
>
>
>
> On Wed, 9 Mar 2005 06:42 pm, Qingqing Zhou wrote:
> > off-by-one is true, but I am not sure if the revised code is faster.
> > sprintf() need the extra job to parse the format. In win32, I am sure it
is
> > much slower.
> >
> > "Neil Conway" <neilc(at)samurai(dot)com> ????
news:422E3EAC(dot)9000403(at)samurai(dot)com(dot)(dot)(dot)
> > > This patch refactors some code in WaitOnLock slightly. The old code
was
> > > slow, and I believe it was off-by-one (it allocates one byte of memory
> > > more than needed).
> > >
> > > Barring any objections I'll apply this to HEAD later today.
> > >
> > > -Neil
> > >
> >
> >
>
> --------------------------------------------------------------------------
--
> > ----
> >
> >
> > > Index: src/backend/storage/lmgr/lock.c
> > > ===================================================================
> > > RCS file: /var/lib/cvs/pgsql/src/backend/storage/lmgr/lock.c,v
> > > retrieving revision 1.147
> > > diff -c -r1.147 lock.c
> > > *** src/backend/storage/lmgr/lock.c 1 Mar 2005 21:14:59 -0000 1.147
> > > --- src/backend/storage/lmgr/lock.c 8 Mar 2005 05:42:06 -0000
> > > ***************
> > > *** 1076,1081 ****
> > > --- 1076,1082 ----
> > > LockMethod lockMethodTable = LockMethods[lockmethodid];
> > > char *new_status,
> > > *old_status;
> > > + size_t len;
> > >
> > > Assert(lockmethodid < NumLockMethods);
> > >
> > > ***************
> > > *** 1083,1091 ****
> > > locallock->lock, locallock->tag.mode);
> > >
> > > old_status = pstrdup(get_ps_display());
> > > ! new_status = (char *) palloc(strlen(old_status) + 10);
> > > ! strcpy(new_status, old_status);
> > > ! strcat(new_status, " waiting");
> > > set_ps_display(new_status);
> > >
> > > awaitedLock = locallock;
> > > --- 1084,1092 ----
> > > locallock->lock, locallock->tag.mode);
> > >
> > > old_status = pstrdup(get_ps_display());
> > > ! len = strlen(old_status);
> > > ! new_status = (char *) palloc(len + 8 + 1);
> > > ! sprintf(new_status, "%s waiting", old_status);
> > > set_ps_display(new_status);
> > >
> > > awaitedLock = locallock;
> > >
> >
> >
>
> --------------------------------------------------------------------------
--
> > ----
> >
> >
> > >
> > > ---------------------------(end of
broadcast)---------------------------
> > > TIP 2: you can get off all lists at once with the unregister command
> > > (send "unregister YourEmailAddressHere" to
majordomo(at)postgresql(dot)org)
> > >
> >
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 6: Have you searched our list archives?
> >
> > http://archives.postgresql.org
> >
> >
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
> (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
>

In response to

Browse pgsql-patches by date

  From Date Subject
Next Message Neil Conway 2005-03-09 12:05:34 Re: trivial refactoring of WaitOnLock
Previous Message Russell Smith 2005-03-09 09:08:08 Re: trivial refactoring of WaitOnLock