Revert collecting trie stats.
This commit is contained in:
parent
e8aaf26ab4
commit
0e679fbee5
@ -14,8 +14,6 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
use std::sync::RwLock;
|
||||
use std::cell::RefCell;
|
||||
use hash::*;
|
||||
use sha3::*;
|
||||
use hashdb::*;
|
||||
@ -23,26 +21,11 @@ use rlp::*;
|
||||
use super::triedbmut::*;
|
||||
use super::trietraits::*;
|
||||
|
||||
lazy_static! {
|
||||
static ref COMMIT_COUNT: RwLock<usize> = RwLock::new(0);
|
||||
static ref UPDATE_COUNT: RwLock<usize> = RwLock::new(0);
|
||||
}
|
||||
|
||||
/// Get mean number of updates per commit so far.
|
||||
pub fn updates_per_commit() -> f64 {
|
||||
let cc = *COMMIT_COUNT.read().unwrap();
|
||||
if cc > 0 {
|
||||
(*UPDATE_COUNT.read().unwrap() as f64) / (cc as f64)
|
||||
} else { 0.0 }
|
||||
}
|
||||
|
||||
/// A mutable `Trie` implementation which hashes keys and uses a generic `HashDB` backing database.
|
||||
///
|
||||
/// Use it as a `Trie` or `TrieMut` trait object. You can use `raw()` to get the backing TrieDBMut object.
|
||||
pub struct SecTrieDBMut<'db> {
|
||||
raw: TrieDBMut<'db>,
|
||||
/// Get number of updates done on this trie so far.
|
||||
pub update_count: RefCell<usize>,
|
||||
raw: TrieDBMut<'db>
|
||||
}
|
||||
|
||||
impl<'db> SecTrieDBMut<'db> {
|
||||
@ -50,13 +33,13 @@ impl<'db> SecTrieDBMut<'db> {
|
||||
/// Initialise to the state entailed by the genesis block.
|
||||
/// This guarantees the trie is built correctly.
|
||||
pub fn new(db: &'db mut HashDB, root: &'db mut H256) -> Self {
|
||||
SecTrieDBMut { raw: TrieDBMut::new(db, root), update_count: RefCell::new(0) }
|
||||
SecTrieDBMut { raw: TrieDBMut::new(db, root) }
|
||||
}
|
||||
|
||||
/// Create a new trie with the backing database `db` and `root`
|
||||
/// Panics, if `root` does not exist
|
||||
pub fn from_existing(db: &'db mut HashDB, root: &'db mut H256) -> Self {
|
||||
SecTrieDBMut { raw: TrieDBMut::from_existing(db, root), update_count: RefCell::new(0) }
|
||||
SecTrieDBMut { raw: TrieDBMut::from_existing(db, root) }
|
||||
}
|
||||
|
||||
/// Get the backing database.
|
||||
@ -67,9 +50,7 @@ impl<'db> SecTrieDBMut<'db> {
|
||||
}
|
||||
|
||||
impl<'db> Trie for SecTrieDBMut<'db> {
|
||||
fn root(&self) -> &H256 {
|
||||
self.raw.root()
|
||||
}
|
||||
fn root(&self) -> &H256 { self.raw.root() }
|
||||
|
||||
fn contains(&self, key: &[u8]) -> bool {
|
||||
self.raw.contains(&key.sha3())
|
||||
@ -82,27 +63,14 @@ impl<'db> Trie for SecTrieDBMut<'db> {
|
||||
|
||||
impl<'db> TrieMut for SecTrieDBMut<'db> {
|
||||
fn insert(&mut self, key: &[u8], value: &[u8]) {
|
||||
*self.update_count.borrow_mut() += 1;
|
||||
self.raw.insert(&key.sha3(), value);
|
||||
}
|
||||
|
||||
fn remove(&mut self, key: &[u8]) {
|
||||
*self.update_count.borrow_mut() += 1;
|
||||
self.raw.remove(&key.sha3());
|
||||
}
|
||||
}
|
||||
|
||||
impl<'db> Drop for SecTrieDBMut<'db> {
|
||||
fn drop(&mut self) {
|
||||
let uc = *self.update_count.borrow();
|
||||
if uc > 0 {
|
||||
*COMMIT_COUNT.write().unwrap() += 1;
|
||||
*UPDATE_COUNT.write().unwrap() += uc;
|
||||
*self.update_count.borrow_mut() = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sectrie_to_trie() {
|
||||
use memorydb::*;
|
||||
|
Loading…
Reference in New Issue
Block a user