mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 23:18:14 +01:00
bloom: use Span instead of std::vector for insert and contains
We can avoid many unnecessary std::vector allocations by changing CBloomFilter to take Spans instead of std::vector's for the `insert` and `contains` operations. CBloomFilter currently converts types such as CDataStream and uint256 to std::vector on `insert` and `contains`. This is unnecessary because CDataStreams and uint256 are already std::vectors internally. We just need a way to point to the right data within those types. Span gives us this ability. Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
committed by
fanquake
parent
3c776fdcec
commit
2ba4ddf31d
@@ -83,7 +83,7 @@ BOOST_AUTO_TEST_CASE(bloom_create_insert_key)
|
||||
CBloomFilter filter(2, 0.001, 0, BLOOM_UPDATE_ALL);
|
||||
filter.insert(vchPubKey);
|
||||
uint160 hash = pubkey.GetID();
|
||||
filter.insert(std::vector<unsigned char>(hash.begin(), hash.end()));
|
||||
filter.insert(hash);
|
||||
|
||||
CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
|
||||
stream << filter;
|
||||
|
||||
Reference in New Issue
Block a user