2016-12-28 10:46 GMT+01:00 Pavel Stehule <pavel.stehule@xxxxxxxxx>:
Hi2016-12-28 10:15 GMT+01:00 Tim Uckun <timuckun@xxxxxxxxx>:I have seen various links on the internet which indicate that PLV8 is significantly faster than PL-PGSQL sometimes an order of magnitude faster.Is this uniformly true or is it just in certain circumstances?It depends on usageIs there any benefit to choosing PL-PGSQL?there are more benefits0. this language has integrated SQL - the code with lot of SQL is more readable.1. it is everywhere, where is Postgres2. it uses same data types like Postgres, there is not any conversion related overhead3. this engine has quick start, faster than anything else.
4. It is not slow language - it is AST interpret - it is significantly faster than byte code based interpreter without JIT. The _expression_ are slower - the PostgerSQL _expression_ interpret. This is bottle neck of PLpgSQL performance - on second hand - it is main benefit of PLpgSQL - there is full integration with PostgreSQL runtime without any exceptions.
Years ago PLpgSQL has very slow operations on arrays - this was fixed in 9.5. Still PLpgSQL has slow string updates - Strings are immutable in PLpgSQL - so update means generating new string. But usually it is not bottleneck in PL environment.
Regards
Pavel
Is there work going on to make PL-PGSQL more performant or has it gotten significantly faster in the last two years or so (some of the links are a from a while ago).What I know no. There is not any reason why to do it. This language is designed be glue of SQL statements. Nothing more, nothing less. I did tests, and it is significantly faster than SQL engine.Some years ago I though about compilation to C language, but the target was better obfuscation not performance.PLpgSQL is not designed for hard calculation - the critical path is in SQL always. If you need different performance, than you can use PLV8, PLPython or native C extension. Postgres has very good API for writing C extensions.RegardsPavelThanks.