summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/key_string_bm.cpp
diff options
context:
space:
mode:
authorJosef Ahmad <josef.ahmad@mongodb.com>2021-09-23 07:23:37 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-09-23 08:09:27 +0000
commit0fe94060f84563af39863e42e9af0e6e609d2721 (patch)
treed01be1ceeff224c2e65db9378d46c2f9c2b2896b /src/mongo/db/storage/key_string_bm.cpp
parent6a98720eb0db126a5068088675da6ceb566fd727 (diff)
downloadmongo-0fe94060f84563af39863e42e9af0e6e609d2721.tar.gz
SERVER-59199 KeyString: support large RecordId binary strings
Diffstat (limited to 'src/mongo/db/storage/key_string_bm.cpp')
-rw-r--r--src/mongo/db/storage/key_string_bm.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/mongo/db/storage/key_string_bm.cpp b/src/mongo/db/storage/key_string_bm.cpp
index e03e48222e0..263a6030ec5 100644
--- a/src/mongo/db/storage/key_string_bm.cpp
+++ b/src/mongo/db/storage/key_string_bm.cpp
@@ -207,6 +207,26 @@ void BM_KeyStringStackBuilderCopy(benchmark::State& state, BsonValueType bsonTyp
state.SetItemsProcessed(state.iterations() * kSampleSize);
}
+void BM_KeyStringRecordIdStrAppend(benchmark::State& state, const size_t size) {
+ const auto buf = std::string(size, 'a');
+ auto rid = RecordId(buf.c_str(), size);
+ for (auto _ : state) {
+ benchmark::ClobberMemory();
+ benchmark::DoNotOptimize(KeyString::Builder(KeyString::Version::V1, rid));
+ }
+}
+
+void BM_KeyStringRecordIdStrDecode(benchmark::State& state, const size_t size) {
+ const auto buf = std::string(size, 'a');
+ KeyString::Builder ks(KeyString::Version::V1, RecordId(buf.c_str(), size));
+ auto ksBuf = ks.getBuffer();
+ auto ksSize = ks.getSize();
+ for (auto _ : state) {
+ benchmark::ClobberMemory();
+ benchmark::DoNotOptimize(KeyString::decodeRecordIdStrAtEnd(ksBuf, ksSize));
+ }
+}
+
BENCHMARK_CAPTURE(BM_KeyStringValueAssign, Int, INT);
BENCHMARK_CAPTURE(BM_KeyStringValueAssign, Double, DOUBLE);
BENCHMARK_CAPTURE(BM_KeyStringValueAssign, Decimal, DECIMAL);
@@ -245,5 +265,14 @@ BENCHMARK_CAPTURE(BM_KeyStringToBSON, V1_String, KeyString::Version::V1, STRING)
BENCHMARK_CAPTURE(BM_KeyStringToBSON, V0_Array, KeyString::Version::V0, ARRAY);
BENCHMARK_CAPTURE(BM_KeyStringToBSON, V1_Array, KeyString::Version::V1, ARRAY);
+BENCHMARK_CAPTURE(BM_KeyStringRecordIdStrAppend, 16B, 16);
+BENCHMARK_CAPTURE(BM_KeyStringRecordIdStrAppend, 512B, 512);
+BENCHMARK_CAPTURE(BM_KeyStringRecordIdStrAppend, 1kB, 1024);
+BENCHMARK_CAPTURE(BM_KeyStringRecordIdStrAppend, 1MB, 1024 * 1024);
+BENCHMARK_CAPTURE(BM_KeyStringRecordIdStrDecode, 16B, 16);
+BENCHMARK_CAPTURE(BM_KeyStringRecordIdStrDecode, 512B, 512);
+BENCHMARK_CAPTURE(BM_KeyStringRecordIdStrDecode, 1kB, 1024);
+BENCHMARK_CAPTURE(BM_KeyStringRecordIdStrDecode, 1MB, 1024 * 1024);
+
} // namespace
} // namespace mongo