diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2016-08-30 16:39:33 +0100 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2016-08-31 10:03:32 +0100 |
commit | 6cf8ca2a7f3e11ca5559018dfc9b20869c07cdce (patch) | |
tree | 5634718d7626d234510d1f9e4c714627ff4b8590 /src/cryptonote_core | |
parent | Merge pull request #1014 (diff) | |
download | monero-6cf8ca2a7f3e11ca5559018dfc9b20869c07cdce.tar.xz |
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.
Diffstat (limited to 'src/cryptonote_core')
-rw-r--r-- | src/cryptonote_core/blockchain.cpp | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/cryptonote_core/blockchain.cpp b/src/cryptonote_core/blockchain.cpp index 07db59796..dd9c21b91 100644 --- a/src/cryptonote_core/blockchain.cpp +++ b/src/cryptonote_core/blockchain.cpp @@ -1801,12 +1801,8 @@ bool Blockchain::find_blockchain_supplement(const std::list<crypto::hash>& qbloc { try { - split_height = m_db->get_block_height(*bl_it); - break; - } - catch (const BLOCK_DNE& e) - { - continue; + if (m_db->block_exists(*bl_it, &split_height)) + break; } catch (const std::exception& e) { |