Separate chash insert, search, delete tests.
authorRobert Haas <rhaas@postgresql.org>
Fri, 27 Jul 2012 15:03:00 +0000 (11:03 -0400)
committerRobert Haas <rhaas@postgresql.org>
Tue, 27 Jan 2015 02:24:22 +0000 (02:24 +0000)
contrib/hashtest/hashtest--1.0.sql
contrib/hashtest/hashtest.c

index 4043dc1f5c322783095105efcb22d9336474e705..4b249018f981003de40ee69e11433da7bd47797e 100644 (file)
@@ -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;
index 7b29a8e3bcc4c9cc546a53d42fd121246491dc0c..e0c70740dfbab75d047cbad79d16ca3245b7a2f6 100644 (file)
 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();
 }