What language is faster, C or PL/PgSQL?
Hi people,
I need to write an algorithm for processing large amounts of data. I
want to write a function on PgAdmin 3 to solve my problem. I need to
know what language should be used, C or PL/PgSQL?
Needless to say, what I need is quickly. What language is faster, C or
PL/PgSQL?
Greetings, Karel River�n
University of Informatics Science
On Sat, Feb 2, 2013 at 10:42 AM, Karel Riverón Escobar <
kescobar@estudiantes.uci.cu> wrote:
Hi people,
I need to write an algorithm for processing large amounts of data. I want
to write a function on PgAdmin 3 to solve my problem. I need to know what
language should be used, C or PL/PgSQL?Needless to say, what I need is quickly. What language is faster, C or
PL/PgSQL?
Hello, performance processing data is not 100% related to language, IMO is
more related with algorithm.
You need to check your algorithm and order.
Answering your question i suggest you C could be some ugly but will be
faster, in this point could be good read an opinion from any PG hacker.
Regards,
Greetings, Karel Riverón
University of Informatics Science
--
Cristian Salamea
@ovnicraft
Here is an advantage Plpgsql has:
http://www.postgresql.org/docs/9.1/static/plpgsql-expressions.html
I guess you can offset this by creating your own prepared statements in C.
Otherwise, I cant think of how C could be slower. I would choose C for
functions that dont have SQL statements in them e.g. math and string
processing.
From: pgsql-general-owner@postgresql.org
[mailto:pgsql-general-owner@postgresql.org] On Behalf Of Karel Riverón
Escobar
Sent: February 2, 2013 10:42 AM
To: pgsql-general@postgresql.org
Subject: [GENERAL] What language is faster, C or PL/PgSQL?
Hi people,
I need to write an algorithm for processing large amounts of data. I want to
write a function on PgAdmin 3 to solve my problem. I need to know what
language should be used, C or PL/PgSQL?
Needless to say, what I need is quickly. What language is faster, C or
PL/PgSQL?
Greetings, Karel Riverón
University of Informatics Science
On Sat, Feb 2, 2013 at 11:36 AM, Carlo Stonebanks
<stonec.register@sympatico.ca> wrote:
Here is an advantage Plpgsql has:
http://www.postgresql.org/docs/9.1/static/plpgsql-expressions.htmlI guess you can offset this by creating your own prepared statements in C.
Otherwise, I can’t think of how C could be slower. I would choose C for
functions that don’t have SQL statements in them – e.g. math and string
processing.
For cases involving data processing (SPI calls), C can be slower
because pl/pgsql has a lot of optimizations in it that can be very
easy to miss. I don't suggest writing backend C functions at all
unless you are trying to interface with a C library to access
functionality currently not exposed in SQL.
merlin
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
On Mon, Feb 4, 2013 at 08:33:02AM -0600, Merlin Moncure wrote:
On Sat, Feb 2, 2013 at 11:36 AM, Carlo Stonebanks
<stonec.register@sympatico.ca> wrote:Here is an advantage Plpgsql has:
http://www.postgresql.org/docs/9.1/static/plpgsql-expressions.htmlI guess you can offset this by creating your own prepared statements in C.
Otherwise, I can’t think of how C could be slower. I would choose C for
functions that don’t have SQL statements in them – e.g. math and string
processing.For cases involving data processing (SPI calls), C can be slower
because pl/pgsql has a lot of optimizations in it that can be very
easy to miss. I don't suggest writing backend C functions at all
unless you are trying to interface with a C library to access
functionality currently not exposed in SQL.
How is PL/pgSQL faster than C? I thought we had optimized PL/pgSQL to
save parsed functions, but I don't see how that would help with queries,
which use SPI. Am I missing something?
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ It's impossible for everything to be true. +
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
If a C function was a call to multiple (unprepared) SQL statements, could PL/PGSQL's prepare-once plan caching have an advantage?
-----Original Message-----
From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Bruce Momjian
Sent: February 5, 2013 12:06 AM
To: Merlin Moncure
Cc: Carlo Stonebanks; kescobar@estudiantes.uci.cu; pgsql-general@postgresql.org
Subject: Re: [GENERAL] What language is faster, C or PL/PgSQL?
On Mon, Feb 4, 2013 at 08:33:02AM -0600, Merlin Moncure wrote:
On Sat, Feb 2, 2013 at 11:36 AM, Carlo Stonebanks
<stonec.register@sympatico.ca> wrote:Here is an advantage Plpgsql has:
http://www.postgresql.org/docs/9.1/static/plpgsql-expressions.htmlI guess you can offset this by creating your own prepared statements in C.
Otherwise, I can t think of how C could be slower. I would choose C
for functions that don t have SQL statements in them e.g. math and
string processing.For cases involving data processing (SPI calls), C can be slower
because pl/pgsql has a lot of optimizations in it that can be very
easy to miss. I don't suggest writing backend C functions at all
unless you are trying to interface with a C library to access
functionality currently not exposed in SQL.
How is PL/pgSQL faster than C? I thought we had optimized PL/pgSQL to save parsed functions, but I don't see how that would help with queries, which use SPI. Am I missing something?
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ It's impossible for everything to be true. +
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org) To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
2013/2/5 Bruce Momjian <bruce@momjian.us>:
On Mon, Feb 4, 2013 at 08:33:02AM -0600, Merlin Moncure wrote:
On Sat, Feb 2, 2013 at 11:36 AM, Carlo Stonebanks
<stonec.register@sympatico.ca> wrote:Here is an advantage Plpgsql has:
http://www.postgresql.org/docs/9.1/static/plpgsql-expressions.htmlI guess you can offset this by creating your own prepared statements in C.
Otherwise, I can’t think of how C could be slower. I would choose C for
functions that don’t have SQL statements in them – e.g. math and string
processing.For cases involving data processing (SPI calls), C can be slower
because pl/pgsql has a lot of optimizations in it that can be very
easy to miss. I don't suggest writing backend C functions at all
unless you are trying to interface with a C library to access
functionality currently not exposed in SQL.How is PL/pgSQL faster than C? I thought we had optimized PL/pgSQL to
save parsed functions, but I don't see how that would help with queries,
which use SPI. Am I missing something?
PL/pgSQL can be faster than badly written C functions if there are
bottle neck is in server side routines. Any well written C code will
be faster then well written PL/pgSQL - how much depends on specific
use case. If bottle neck is in IO op, then not too much - PL/pgSQL has
not any specific optimization, that cannot be used in C.
Regards
Pavel
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com+ It's impossible for everything to be true. +
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general