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
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