Thread: Benchmarking Function
Fellow PostgreSQLers, With a bit of guidance from Klint Gore, Neil Conway, Josh Berkus, and Alexey Dvoychenkov, I have written a PL/pgSQL function to help me compare the performance between different functions that execute the same task. I've blogged the about the function here: http://www.justatheory.com/computers/databases/postgresql/ benchmarking_functions.html My question for the list is: How important is it that I have the control in there? In the version I've blogged, the control just executes 'SELECT TRUE FROM generate_series( 1, n)' and iterates loops over the results. But I wasn't sure how accurate that was. Another approach I've tried it to simply loop without executing a query, 'FOR i IN 1..n LOOP', but that takes virtually no time at all. The idea of the control is, of course, to subtract the overhead of the benchmarking function from the code actually being tested. So I guess my question is, how important is it to have the control there, and, if it is important, how should it actually work? Many TIA, David
DW, > The idea of the control is, of course, to subtract the overhead of > the benchmarking function from the code actually being tested. So I > guess my question is, how important is it to have the control there, > and, if it is important, how should it actually work? Well, per our conversation the approach doesn't really work. EXECUTE 'string' + generate_series seems to carry a substantial and somewhat random overhead, between 100ms and 200ms -- enough to wipe out any differences between queries. -- Josh Berkus Aglio Database Solutions San Francisco
On May 21, 2006, at 12:23, Josh Berkus wrote: > Well, per our conversation the approach doesn't really work. EXECUTE > 'string' + generate_series seems to carry a substantial and > somewhat random > overhead, between 100ms and 200ms -- enough to wipe out any > differences > between queries. Per our conversation I eliminated the EXECUTE 'string' + generate_series. Check it out. http://theory.kineticode.com/computers/databases/postgresql/ benchmarking_functions.html (Temporary URL; justatheory.com seems to have disappeared from DNS... Best, David