From 6cf8ca2a7f3e11ca5559018dfc9b20869c07cdce Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Tue, 30 Aug 2016 16:39:33 +0100 Subject: core: faster find_blockchain_supplement Since this queries block heights for blocks that may or may not exist, queries for non existing blocks would throw an exception, and that would slow down the loop a lot. 7 seconds to go through a 30 hash list. Fix this by adding an optional return block height to block_exists and using this instead. Actual errors will still throw an exception. This also cuts down on log exception spam. --- src/blockchain_db/blockchain_db.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/blockchain_db/blockchain_db.h') diff --git a/src/blockchain_db/blockchain_db.h b/src/blockchain_db/blockchain_db.h index d26080a3b..5b6a793d8 100644 --- a/src/blockchain_db/blockchain_db.h +++ b/src/blockchain_db/blockchain_db.h @@ -736,10 +736,11 @@ public: * @brief checks if a block exists * * @param h the hash of the requested block + * @param height if non NULL, returns the block's height if found * * @return true of the block exists, otherwise false */ - virtual bool block_exists(const crypto::hash& h) const = 0; + virtual bool block_exists(const crypto::hash& h, uint64_t *height = NULL) const = 0; /** * @brief fetches the block with the given hash -- cgit v1.2.3