Re: trivial refactoring of WaitOnLock
От | Qingqing Zhou |
---|---|
Тема | Re: trivial refactoring of WaitOnLock |
Дата | |
Msg-id | d0m9me$2r13$1@news.hub.org обсуждение исходный текст |
Ответ на | trivial refactoring of WaitOnLock (Neil Conway <neilc@samurai.com>) |
Ответы |
Re: trivial refactoring of WaitOnLock
|
Список | pgsql-patches |
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@samurai.com> ???? news:422E3EAC.9000403@samurai.com... > 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@postgresql.org) >
В списке pgsql-patches по дате отправления: