I try to use procedures in Orafce package, and I did some easy performance tests. I found some hard problems:
1. test case
create or replace procedure p1(inout r int, inout v int) as $$
begin v := random() * r; end
$$ language plpgsql;
This command requires
do $$ declare r int default 100; x int; begin for i in 1..300000 loop call p1(r, x); end loop; end; $$;
about 2.2GB RAM and 10 sec.
I am having a consistent result of 3 secs, with a modified version (exec_stmt_call) of your patch. But my notebook is (Core 5, 8GB and SSD), could it be a difference in the testing hardware?
My notebook is old T520, and more I have a configured Postgres with --enable-cassert option.