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.
This commit is contained in:
moneromooo-monero
2016-08-30 16:39:33 +01:00
parent c3ba844f03
commit 6cf8ca2a7f
7 changed files with 19 additions and 12 deletions
+2 -1
View File
@@ -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