From 6001d855bba49b349737df8c57f21d700a2b26f0 Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Fri, 27 Jul 2012 11:03:00 -0400 Subject: [PATCH] Separate chash insert, search, delete tests. --- contrib/hashtest/hashtest--1.0.sql | 18 +++++++++--- contrib/hashtest/hashtest.c | 44 ++++++++++++++++-------------- 2 files changed, 37 insertions(+), 25 deletions(-) diff --git a/contrib/hashtest/hashtest--1.0.sql b/contrib/hashtest/hashtest--1.0.sql index 4043dc1f5c..4b249018f9 100644 --- a/contrib/hashtest/hashtest--1.0.sql +++ b/contrib/hashtest/hashtest--1.0.sql @@ -1,12 +1,22 @@ -- complain if script is sourced in psql, rather than via CREATE EXTENSION \echo Use "CREATE EXTENSION hashtest" to load this file. \quit -CREATE FUNCTION test_dynahash() +CREATE FUNCTION chash_insert_test() RETURNS void -AS 'MODULE_PATHNAME', 'test_dynahash' +AS 'MODULE_PATHNAME', 'chash_insert_test' +LANGUAGE C; + +CREATE FUNCTION chash_search_test() +RETURNS void +AS 'MODULE_PATHNAME', 'chash_search_test' LANGUAGE C; -CREATE FUNCTION test_chash() +CREATE FUNCTION chash_delete_test() RETURNS void -AS 'MODULE_PATHNAME', 'test_chash' +AS 'MODULE_PATHNAME', 'chash_delete_test' +LANGUAGE C; + +CREATE FUNCTION test_dynahash() +RETURNS void +AS 'MODULE_PATHNAME', 'test_dynahash' LANGUAGE C; diff --git a/contrib/hashtest/hashtest.c b/contrib/hashtest/hashtest.c index 7b29a8e3bc..e0c70740df 100644 --- a/contrib/hashtest/hashtest.c +++ b/contrib/hashtest/hashtest.c @@ -14,12 +14,16 @@ PG_MODULE_MAGIC; void _PG_init(void); +Datum chash_insert_test(PG_FUNCTION_ARGS); +Datum chash_search_test(PG_FUNCTION_ARGS); +Datum chash_delete_test(PG_FUNCTION_ARGS); Datum test_dynahash(PG_FUNCTION_ARGS); -Datum test_chash(PG_FUNCTION_ARGS); static void hashtest_shmem_startup(void); +PG_FUNCTION_INFO_V1(chash_insert_test); +PG_FUNCTION_INFO_V1(chash_search_test); +PG_FUNCTION_INFO_V1(chash_delete_test); PG_FUNCTION_INFO_V1(test_dynahash); -PG_FUNCTION_INFO_V1(test_chash); typedef struct { @@ -93,16 +97,10 @@ hashtest_shmem_startup(void) } Datum -test_chash(PG_FUNCTION_ARGS) +chash_insert_test(PG_FUNCTION_ARGS) { uint32 i; hentry e; - instr_time t0, - t1, - t2, - t3; - - INSTR_TIME_SET_CURRENT(t0); for (i = 0; i < 1000000; ++i) { @@ -118,7 +116,14 @@ test_chash(PG_FUNCTION_ARGS) elog(LOG, "insert %u: worked twice", i); } - INSTR_TIME_SET_CURRENT(t1); + PG_RETURN_VOID(); +} + +Datum +chash_search_test(PG_FUNCTION_ARGS) +{ + uint32 i; + hentry e; for (i = 0; i < 1000000; ++i) { @@ -132,7 +137,14 @@ test_chash(PG_FUNCTION_ARGS) elog(LOG, "search %u: found %u", i, e.val); } - INSTR_TIME_SET_CURRENT(t2); + PG_RETURN_VOID(); +} + +Datum +chash_delete_test(PG_FUNCTION_ARGS) +{ + uint32 i; + hentry e; for (i = 0; i < 1000000; ++i) { @@ -147,16 +159,6 @@ test_chash(PG_FUNCTION_ARGS) elog(LOG, "delete %u: found twice", i); } - INSTR_TIME_SET_CURRENT(t3); - INSTR_TIME_SUBTRACT(t3, t2); - INSTR_TIME_SUBTRACT(t2, t1); - INSTR_TIME_SUBTRACT(t1, t0); - - elog(LOG, "inserts: %lu us; searches: %lu us; deletes: %lu us", - (unsigned long) INSTR_TIME_GET_MICROSEC(t1), - (unsigned long) INSTR_TIME_GET_MICROSEC(t2), - (unsigned long) INSTR_TIME_GET_MICROSEC(t3)); - PG_RETURN_VOID(); } -- 2.39.5