v25-0005-Measure-load-time-of-bench_search_random_nodes.patch

text/x-patch

Filename: v25-0005-Measure-load-time-of-bench_search_random_nodes.patch
Type: text/x-patch
Part: 3
Message: Re: [PoC] Improve dead tuple storage for lazy vacuum

Patch

Format: format-patch
Series: patch v25-0005
Subject: Measure load time of bench_search_random_nodes
File+
contrib/bench_radix_tree/bench_radix_tree--1.0.sql 1 0
contrib/bench_radix_tree/bench_radix_tree.c 12 5
From 8edd5b4c0fcbf7681c5388faaf85a96ae451c99e Mon Sep 17 00:00:00 2001
From: John Naylor <john.naylor@postgresql.org>
Date: Tue, 7 Feb 2023 13:06:00 +0700
Subject: [PATCH v25 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