From bcf459304fadffbe29341073c731621be3595274 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Thu, 14 Nov 2024 17:16:57 -0800 Subject: [PATCH] Improve cpu performance for workload generation in server_bench --- ServerBench.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/ServerBench.cpp b/ServerBench.cpp index b49a372..2d07e6c 100644 --- a/ServerBench.cpp +++ b/ServerBench.cpp @@ -138,13 +138,17 @@ void tupleAppend(std::string &output, int64_t value) { void tupleAppend(std::string &output, std::string_view value) { output.push_back('\x02'); - for (auto c : value) { - if (c == '\x00') { - output.push_back('\x00'); - output.push_back('\xff'); - } else { - output.push_back(c); + if (memchr(value.data(), '\x00', value.size()) != nullptr) { + for (auto c : value) { + if (c == '\x00') { + output.push_back('\x00'); + output.push_back('\xff'); + } else { + output.push_back(c); + } } + } else { + output.insert(output.end(), value.begin(), value.end()); } output.push_back('\x00'); } @@ -412,19 +416,18 @@ int main(int argc, char **argv) { } #endif - TxQueue> queue{10}; + TxQueue queue{10}; auto workloadThread = std::thread{[&]() { for (int64_t version = kWindowSize;; ++version, transactions.fetch_add(1, std::memory_order_relaxed)) { - auto tx = std::make_unique(version); - queue.push(std::move(tx)); + queue.push(Transaction(version)); } }}; auto resolverThread = std::thread{[&]() { for (;;) { - auto tx = queue.pop()->get(); + auto tx = queue.pop(); resolver.resolve(tx->reads.data(), tx->reads.size(), tx->writes.data(), tx->writes.size(), tx->version, tx->oldestVersion); }