Caro Euler:

  Muito obrigado pelo seu esforço em me ajudar, mas entenda que me foi vendida 
a idéia de que eu poderia portar todos os programas em PL/SQL para PL/pgSQL, e, 
além disto não ser verdade, a performance mostrou-se muito ruim - para os 
testes que eu realizei.
  Ok; compilando em C fica mais rápido, mas você testou em qual máquina? Ví que 
o primeiro resultado retornou em 65s, tempo semelhante ao servidor da empresa 
que, se não me engano, possui 1 xeon com 4 núcleos com o Post 8.2.7, SUSE 10.3 
64.
  A função, no Oracle, rodou no 11g 11.1.6, também no SUSE 10.3 64, mas em um 
mísero Celeron dual, e foi compilada de duas formas, obtendo o seguinte:

a - INTERPRETED: 9s
b - NATIVE     : 3.5s

  Diante de tamanha discrepância, concluí que estava com algum problema no 
servidor do banco, 

mas um colega realizou o mesmo teste no Post, obtendo tempos semelhantes.
    
  Tentei depois com uma outra função, desta vez para calcular o fibonacci, mas 
o resultado também foi bem mais favorável ao Oracle.
  Esta situação "quebrou as minhas pernas" - adeus projeto integrado 
Postgres/Oracle. Ou, pelo menos, por enquanto.
  Mas novamente, muito obrigado.


Márcio de Figueiredo Moura e Castro




________________________________
De: Euler Taveira de Oliveira <eu...@timbira.com>
Para: Comunidade PostgreSQL Brasileira <pgbr-geral@listas.postgresql.org.br>
Enviadas: Quinta-feira, 24 de Setembro de 2009 18:12:41
Assunto: Re: [pgbr-geral] Res:  Res: Memory (heap)

MARCIO CASTRO escreveu:
>   Mas a pergunta que não quer calar é a seguinte: porquê é que o
> PL/pgSQL é tão mais lento do que o PL/SQL?
> 
Não dá para comparar laranja com maça. Fiquei curioso em testar a sua função
mas no momento não tenho um servidor Oracle para testá-la.

O Oracle com certeza deve ter um otimização para tal laço trivial; o
PostgreSQL talvez esteja pecando nisso.

[Fazendo alguns teste de performance...]

A função function1() (versão em PL/PgSQL) e a function2() (versão em C) estão
em anexo.

Pelo que pude notar no oprofile, o problema está relacionado a alocação
excessiva de contexto quando talvez não seja necessário. Estou sem tempo para
investigar o problema agora mas eu reportei o que testei para -hackers [1].

euler=# select function1();
function1
-----------
100000000
(1 row)

Time: 62107,607 ms
euler=# select function2();
function2
-----------
100000000
(1 row)

Time: 419,673 ms

[1] http://archives.postgresql.org/pgsql-hackers/2009-09/msg01585.php


PS> não responda em outros assuntos. Isso bagunça o histórico da lista e
dificulta que estiver buscando no histórico posteriormente.


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/


      
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to