From 4a0d293937876ec348f30ce4ab94da14b925b020 Mon Sep 17 00:00:00 2001 From: John Naylor Date: Tue, 7 Feb 2023 13:06:00 +0700 Subject: [PATCH v26 5/9] Measure load time of bench_search_random_nodes --- .../bench_radix_tree/bench_radix_tree--1.0.sql | 1 + contrib/bench_radix_tree/bench_radix_tree.c | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/contrib/bench_radix_tree/bench_radix_tree--1.0.sql b/contrib/bench_radix_tree/bench_radix_tree--1.0.sql index 2fd689aa91..95eedbbe10 100644 --- a/contrib/bench_radix_tree/bench_radix_tree--1.0.sql +++ b/contrib/bench_radix_tree/bench_radix_tree--1.0.sql @@ -47,6 +47,7 @@ create function bench_search_random_nodes( cnt int8, filter_str text DEFAULT NULL, OUT mem_allocated int8, +OUT load_ms int8, OUT search_ms int8) returns record as 'MODULE_PATHNAME' diff --git a/contrib/bench_radix_tree/bench_radix_tree.c b/contrib/bench_radix_tree/bench_radix_tree.c index 73ddee32de..7d1e2eee57 100644 --- a/contrib/bench_radix_tree/bench_radix_tree.c +++ b/contrib/bench_radix_tree/bench_radix_tree.c @@ -395,9 +395,10 @@ bench_search_random_nodes(PG_FUNCTION_ARGS) end_time; long secs; int usecs; + int64 load_time_ms; int64 search_time_ms; - Datum values[2] = {0}; - bool nulls[2] = {0}; + Datum values[3] = {0}; + bool nulls[3] = {0}; /* from trial and error */ uint64 filter = (((uint64) 0x7F<<32) | (0x07<<24) | (0xFF<<16) | 0xFF); @@ -416,13 +417,18 @@ bench_search_random_nodes(PG_FUNCTION_ARGS) rt = rt_create(CurrentMemoryContext); + start_time = GetCurrentTimestamp(); for (uint64 i = 0; i < cnt; i++) { - const uint64 hash = hash64(i); - const uint64 key = hash & filter; + uint64 hash = hash64(i); + uint64 key = hash & filter; rt_set(rt, key, &key); } + end_time = GetCurrentTimestamp(); + + TimestampDifference(start_time, end_time, &secs, &usecs); + load_time_ms = secs * 1000 + usecs / 1000; elog(NOTICE, "sleeping for 2 seconds..."); pg_usleep(2 * 1000000L); @@ -449,7 +455,8 @@ bench_search_random_nodes(PG_FUNCTION_ARGS) rt_stats(rt); values[0] = Int64GetDatum(rt_memory_usage(rt)); - values[1] = Int64GetDatum(search_time_ms); + values[1] = Int64GetDatum(load_time_ms); + values[2] = Int64GetDatum(search_time_ms); rt_free(rt); PG_RETURN_DATUM(HeapTupleGetDatum(heap_form_tuple(tupdesc, values, nulls))); -- 2.39.1