mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-05 14:06:27 -05:00
Moved the repeated -printpriority fetching out of AddToBlock
AddToBlock was called repeatedly from `addPackageTxs` where the constant value of `printpriority` is recalculated every time.
Since its behavior was changed in 400b151
, I've named the variable accordingly.
This showed up during profiling of AssembleBlock, fetching it once in the constructor results in a measurable speed increase for many iterations.
> ./src/bench/bench_bitcoin --filter='AssembleBlock' --min-time=1000
before:
| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 155,558.97 | 6,428.43 | 0.1% | 1.10 | `AssembleBlock`
after:
| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 148,083.68 | 6,752.94 | 0.1% | 1.10 | `AssembleBlock`
Co-authored-by: furszy <mfurszy@protonmail.com>
This commit is contained in:
parent
2f6dca4d1c
commit
323ce30308
3 changed files with 6 additions and 5 deletions
|
@ -128,7 +128,7 @@ using node::BlockManager;
|
||||||
using node::CacheSizes;
|
using node::CacheSizes;
|
||||||
using node::CalculateCacheSizes;
|
using node::CalculateCacheSizes;
|
||||||
using node::DEFAULT_PERSIST_MEMPOOL;
|
using node::DEFAULT_PERSIST_MEMPOOL;
|
||||||
using node::DEFAULT_PRINTPRIORITY;
|
using node::DEFAULT_PRINT_MODIFIED_FEE;
|
||||||
using node::DEFAULT_STOPATHEIGHT;
|
using node::DEFAULT_STOPATHEIGHT;
|
||||||
using node::KernelNotifications;
|
using node::KernelNotifications;
|
||||||
using node::LoadChainstate;
|
using node::LoadChainstate;
|
||||||
|
@ -624,7 +624,7 @@ void SetupServerArgs(ArgsManager& argsman)
|
||||||
strprintf("Maximum tip age in seconds to consider node in initial block download (default: %u)",
|
strprintf("Maximum tip age in seconds to consider node in initial block download (default: %u)",
|
||||||
Ticks<std::chrono::seconds>(DEFAULT_MAX_TIP_AGE)),
|
Ticks<std::chrono::seconds>(DEFAULT_MAX_TIP_AGE)),
|
||||||
ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
|
ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
|
||||||
argsman.AddArg("-printpriority", strprintf("Log transaction fee rate in " + CURRENCY_UNIT + "/kvB when mining blocks (default: %u)", DEFAULT_PRINTPRIORITY), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
|
argsman.AddArg("-printpriority", strprintf("Log transaction fee rate in " + CURRENCY_UNIT + "/kvB when mining blocks (default: %u)", DEFAULT_PRINT_MODIFIED_FEE), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
|
||||||
argsman.AddArg("-uacomment=<cmt>", "Append comment to the user agent string", ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
|
argsman.AddArg("-uacomment=<cmt>", "Append comment to the user agent string", ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
|
||||||
|
|
||||||
SetupChainParamsBaseOptions(argsman);
|
SetupChainParamsBaseOptions(argsman);
|
||||||
|
|
|
@ -79,6 +79,7 @@ void ApplyArgsManOptions(const ArgsManager& args, BlockAssembler::Options& optio
|
||||||
if (const auto blockmintxfee{args.GetArg("-blockmintxfee")}) {
|
if (const auto blockmintxfee{args.GetArg("-blockmintxfee")}) {
|
||||||
if (const auto parsed{ParseMoney(*blockmintxfee)}) options.blockMinFeeRate = CFeeRate{*parsed};
|
if (const auto parsed{ParseMoney(*blockmintxfee)}) options.blockMinFeeRate = CFeeRate{*parsed};
|
||||||
}
|
}
|
||||||
|
options.print_modified_fee = args.GetBoolArg("-printpriority", options.print_modified_fee);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BlockAssembler::resetBlock()
|
void BlockAssembler::resetBlock()
|
||||||
|
@ -222,8 +223,7 @@ void BlockAssembler::AddToBlock(CTxMemPool::txiter iter)
|
||||||
nFees += iter->GetFee();
|
nFees += iter->GetFee();
|
||||||
inBlock.insert(iter->GetSharedTx()->GetHash());
|
inBlock.insert(iter->GetSharedTx()->GetHash());
|
||||||
|
|
||||||
bool fPrintPriority = gArgs.GetBoolArg("-printpriority", DEFAULT_PRINTPRIORITY);
|
if (m_options.print_modified_fee) {
|
||||||
if (fPrintPriority) {
|
|
||||||
LogPrintf("fee rate %s txid %s\n",
|
LogPrintf("fee rate %s txid %s\n",
|
||||||
CFeeRate(iter->GetModifiedFee(), iter->GetTxSize()).ToString(),
|
CFeeRate(iter->GetModifiedFee(), iter->GetTxSize()).ToString(),
|
||||||
iter->GetTx().GetHash().ToString());
|
iter->GetTx().GetHash().ToString());
|
||||||
|
|
|
@ -30,7 +30,7 @@ class ChainstateManager;
|
||||||
namespace Consensus { struct Params; };
|
namespace Consensus { struct Params; };
|
||||||
|
|
||||||
namespace node {
|
namespace node {
|
||||||
static const bool DEFAULT_PRINTPRIORITY = false;
|
static const bool DEFAULT_PRINT_MODIFIED_FEE = false;
|
||||||
|
|
||||||
struct CBlockTemplate
|
struct CBlockTemplate
|
||||||
{
|
{
|
||||||
|
@ -159,6 +159,7 @@ public:
|
||||||
CFeeRate blockMinFeeRate{DEFAULT_BLOCK_MIN_TX_FEE};
|
CFeeRate blockMinFeeRate{DEFAULT_BLOCK_MIN_TX_FEE};
|
||||||
// Whether to call TestBlockValidity() at the end of CreateNewBlock().
|
// Whether to call TestBlockValidity() at the end of CreateNewBlock().
|
||||||
bool test_block_validity{true};
|
bool test_block_validity{true};
|
||||||
|
bool print_modified_fee{DEFAULT_PRINT_MODIFIED_FEE};
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit BlockAssembler(Chainstate& chainstate, const CTxMemPool* mempool, const Options& options);
|
explicit BlockAssembler(Chainstate& chainstate, const CTxMemPool* mempool, const Options& options);
|
||||||
|
|
Loading…
Add table
Reference in a new issue