MCPcopy Create free account
hub / github.com/ElementsProject/elements / CCoinsCaching

Function CCoinsCaching

src/bench/ccoins_caching.cpp:19–52  ·  view source on GitHub ↗

Microbenchmark for simple accesses to a CCoinsViewCache database. Note from laanwj, "replicating the actual usage patterns of the client is hard though, many times micro-benchmarks of the database showed completely different characteristics than e.g. reindex timings. But that's not a requirement of every benchmark." (https://github.com/bitcoin/bitcoin/issues/7883#issuecomment-224807484)

Source from the content-addressed store, hash-verified

17// every benchmark."
18// (https://github.com/bitcoin/bitcoin/issues/7883#issuecomment-224807484)
19static void CCoinsCaching(benchmark::Bench& bench)
20{
21 const ECCVerifyHandle verify_handle;
22 ECC_Start();
23
24 FillableSigningProvider keystore;
25 CCoinsView coinsDummy;
26 CCoinsViewCache coins(&coinsDummy);
27 std::vector<CMutableTransaction> dummyTransactions =
28 SetupDummyInputs(keystore, coins, {11 * COIN, 50 * COIN, 21 * COIN, 22 * COIN});
29
30 CMutableTransaction t1;
31 t1.vin.resize(3);
32 t1.vin[0].prevout.hash = dummyTransactions[0].GetHash();
33 t1.vin[0].prevout.n = 1;
34 t1.vin[0].scriptSig << std::vector<unsigned char>(65, 0);
35 t1.vin[1].prevout.hash = dummyTransactions[1].GetHash();
36 t1.vin[1].prevout.n = 0;
37 t1.vin[1].scriptSig << std::vector<unsigned char>(65, 0) << std::vector<unsigned char>(33, 4);
38 t1.vin[2].prevout.hash = dummyTransactions[1].GetHash();
39 t1.vin[2].prevout.n = 1;
40 t1.vin[2].scriptSig << std::vector<unsigned char>(65, 0) << std::vector<unsigned char>(33, 4);
41 t1.vout.resize(2);
42 t1.vout[0].nValue = 90 * COIN;
43 t1.vout[0].scriptPubKey << OP_1;
44
45 // Benchmark.
46 const CTransaction tx_1(t1);
47 bench.run([&] {
48 bool success{AreInputsStandard(tx_1, coins)};
49 assert(success);
50 });
51 ECC_Stop();
52}
53
54BENCHMARK(CCoinsCaching);

Callers

nothing calls this directly

Calls 7

ECC_StartFunction · 0.85
SetupDummyInputsFunction · 0.85
AreInputsStandardFunction · 0.85
ECC_StopFunction · 0.85
resizeMethod · 0.45
GetHashMethod · 0.45
runMethod · 0.45

Tested by

no test coverage detected