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 по дате отправления:

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: Re: Shared dependency patch
Следующее
От: Russell Smith
Дата:
Сообщение: Re: trivial refactoring of WaitOnLock