Compare commits

...

3 Commits

Author SHA1 Message Date
TimothyBanks
1825f38a10 fix: Add perf tests for escrow create and escrow finish 2026-07-10 23:06:22 -04:00
TimothyBanks
e70623d0cb fix: Add perf tests for escrow create and escrow finish 2026-07-10 16:43:30 -04:00
TimothyBanks
19631a6d92 fix: Add perf tests for escrow create and escrow finish 2026-07-10 16:21:53 -04:00

View File

@@ -16,6 +16,7 @@
#include <algorithm>
#include <array>
#include <chrono>
#include <cstddef>
#include <cstdint>
#include <cstring>
@@ -1544,11 +1545,73 @@ struct Wasm_test : public beast::unit_test::Suite
}
}
template <typename Functor>
void
perf(size_t runs, Functor&& f)
{
using std::chrono::duration_cast;
using std::chrono::steady_clock;
// Warm up first.
for (auto i = size_t{}; i < 10; ++i)
{
BEAST_EXPECT(f());
}
auto totalTime = uint64_t{};
for (auto i = size_t{}; i < runs; ++i)
{
auto const start = steady_clock::now();
auto result = f();
auto const end = steady_clock::now();
totalTime += duration_cast<std::chrono::nanoseconds>(end - start).count();
BEAST_EXPECT(result);
}
log << "Average time for " << runs << " runs: " << (totalTime / runs) << " ns\n";
}
void
perfEscrowFinish()
{
testcase("perf escrow finish");
using namespace test::jtx;
static constexpr auto kRuns = 1000;
auto const wasm = hexToBytes(kAllHostFunctionsWasmHex);
Env env{*this};
auto hfns = TestHostFunctions{env, 0};
perf(kRuns, [&] {
return runEscrowWasm(wasm, hfns, 1'000'000, escrowFunctionName, {}).has_value();
});
}
void
perfEscrowCreate()
{
testcase("perf escrow create");
using namespace test::jtx;
static constexpr auto kRuns = 1000;
auto const wasm = hexToBytes(kAllHostFunctionsWasmHex);
Env const env{*this};
auto mock = HostFunctions{env.journal};
perf(kRuns, [&] { return !preflightEscrowWasm(wasm, mock, escrowFunctionName); });
}
void
run() override
{
using namespace test::jtx;
perfEscrowFinish();
perfEscrowCreate();
testGetDataHelperFunctions();
testWasmLib();
testBadWasm();