From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Mario Gonzalez <gonzalemario(at)gmail(dot)com> |
Cc: | editores(at)editores(dot)com(dot)co, postgresql <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: [GENERAL] Concurrencia |
Date: | 2006-03-16 19:38:53 |
Message-ID: | 20060316193853.GA17534@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda pgsql-general |
Mario Gonzalez escribió:
> On 16/03/06, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
> > Porque MemoryContext es un concepto propio de Postgres :-) malloc es
> > parte del estandar que define la libc. palloc usa malloc internamente.
>
> Te entiendo. Pero cuando me referia a «todos los codigos» me referia
> a los codigos de PostgreSQL, jeje :) Porque he visto que hay varias
> lineas que hacen uso de malloc() directamente, quiza para una tarea
> rapida que no vale la pena crear un context.... quizas.
Ah! Puedes dar un ejemplo?
> Hablando de manejo de memoria, Gnome saco su version 2.14 y con ella
> varias novedades como la inclusion de GSlice que segun dicen, es dos
> veces mas rapido que malloc(). ¿Como se pudiera hacer un benchmark
> decente que mida la asignacion de memoria? Por ejemplo, usando
> palloc() v/s malloc() Para empezar, pudiera bastar compilando las
> funciones mencionadas en estos mails y aplicandole un time?
No tengo idea lo que es o hace GSlice. Pero el tema de emplazamiento de
memoria no solo es importante que sea rapido, sino que simplifique la
tarea de programacion. Si tienes que hacer free() de cada elemento a
que haces malloc(), los programas se vuelven complicados rapidamente; es
muy facil perder rastro de que cosas debes liberar. En una funcion o
dos da lo mismo, es trivial. Pero seguirle la pista a todo el
emplazamiento de memoria del backend es muy dificil; y cuando haces un
ROLLBACK tienes que liberarlo todo de una sola vez. Y que pasa si
tienes una transaccion, haces un par de cosas y luego creas un
savepoint, haces otro par de cosas y luego abortas el savepoint? Tienes
que liberar la memoria correspondiente al savepoint pero no el resto.
Y al terminar la transaccion debes liberarlo todo. Esto es dificil de
hacer en general, pero con el tema de los contextos es trivial.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Mario Gonzalez | 2006-03-16 20:38:45 | Re: [GENERAL] Concurrencia |
Previous Message | Felipe Amezquita | 2006-03-16 19:30:51 |
From | Date | Subject | |
---|---|---|---|
Next Message | Joshua D. Drake | 2006-03-16 19:46:31 | Re: will slony work for this ? |
Previous Message | Tony Caduto | 2006-03-16 19:29:32 | will slony work for this ? |