mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-12 00:27:53 +02:00
refactor: Use SpanReader over DataStream
This refactor does not change behavior. However, it avoids a vector copy, which can lead to a minimal speed-up of 1%-5%, depending on the call-site. This is mostly relevant for the fuzz tests and utils that read large blobs of data (like a full block).
This commit is contained in:
@@ -504,7 +504,7 @@ btck_Transaction* btck_transaction_create(const void* raw_transaction, size_t ra
|
||||
return nullptr;
|
||||
}
|
||||
try {
|
||||
DataStream stream{std::span{reinterpret_cast<const std::byte*>(raw_transaction), raw_transaction_len}};
|
||||
SpanReader stream{std::span{reinterpret_cast<const std::byte*>(raw_transaction), raw_transaction_len}};
|
||||
return btck_Transaction::create(std::make_shared<const CTransaction>(deserialize, TX_WITH_WITNESS, stream));
|
||||
} catch (...) {
|
||||
return nullptr;
|
||||
@@ -1093,7 +1093,7 @@ btck_Block* btck_block_create(const void* raw_block, size_t raw_block_length)
|
||||
}
|
||||
auto block{std::make_shared<CBlock>()};
|
||||
|
||||
DataStream stream{std::span{reinterpret_cast<const std::byte*>(raw_block), raw_block_length}};
|
||||
SpanReader stream{std::span{reinterpret_cast<const std::byte*>(raw_block), raw_block_length}};
|
||||
|
||||
try {
|
||||
stream >> TX_WITH_WITNESS(*block);
|
||||
@@ -1344,7 +1344,7 @@ btck_BlockHeader* btck_block_header_create(const void* raw_block_header, size_t
|
||||
return nullptr;
|
||||
}
|
||||
auto header{std::make_unique<CBlockHeader>()};
|
||||
DataStream stream{std::span{reinterpret_cast<const std::byte*>(raw_block_header), raw_block_header_len}};
|
||||
SpanReader stream{std::span{reinterpret_cast<const std::byte*>(raw_block_header), raw_block_header_len}};
|
||||
|
||||
try {
|
||||
stream >> *header;
|
||||
|
||||
Reference in New Issue
Block a user