mirror of
https://github.com/XRPLF/rippled.git
synced 2026-07-11 09:10:21 +00:00
Compare commits
3 Commits
ripple/se/
...
smart-escr
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1825f38a10 | ||
|
|
e70623d0cb | ||
|
|
19631a6d92 |
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user