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>
Mon, 13 Oct 2014 17:14:17 +0000 (13:14 -0400)
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();
 }