Search Postgresql Archives

Re: Explaining functions.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> > is around 250 lines.
> 
> What I normally do for benchmarking of complex functions is to
> sprinkle the source with "raise notice '%', timeofday();" to figure
> out where the bottlenecks are.  Following that, I micro-optimize
> problem queries or expressions outside of the function body in psql.
> 
[Spotts, Christopher] 
I use this set of functions towards this end, sprinkled about...
I'm sure there are better ways to write it,but it works.

CREATE OR REPLACE FUNCTION set_var(name text, val text) RETURNS text AS $$
    if ($_SHARED{$_[0]} = $_[1]) {
        return 'ok';
    } else {
        return "cannot set shared variable $_[0] to $_[1]";
    }
$$ LANGUAGE plperl;

CREATE OR REPLACE FUNCTION get_var(name text) RETURNS text AS $$
    return $_SHARED{$_[0]};
$$ LANGUAGE plperl;

CREATE OR REPLACE FUNCTION time_between_calls() RETURNS interval AS $$
    DECLARE
		ot text;
	BEGIN
	ot := get_var('calltime');
	PERFORM set_var('calltime',timeofday());
	RETURN timeofday():: timestamp - ot :: timestamp;	
	END;
$$ LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION start_time_between_calls() RETURNS void AS $$    
	BEGIN
	PERFORM set_var('calltime',timeofday());
	END;
$$ LANGUAGE plpgsql;


CREATE OR REPLACE FUNCTION test() RETURNS void AS $$    
	BEGIN
	PERFORM start_time_between_calls();
	raise notice '%',time_between_calls();
	PERFORM pg_sleep(3);
	raise notice '%',time_between_calls();
	END
$$ LANGUAGE plpgsql;


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux