Skip to content

Commit

Permalink
update masstree. seems to give a small (1-2%) speedup on tpcc
Browse files Browse the repository at this point in the history
  • Loading branch information
nathanielherman committed Mar 23, 2015
1 parent 323150b commit 1a83859
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 20 deletions.
34 changes: 17 additions & 17 deletions btree_impl.h
Expand Up @@ -32,8 +32,8 @@ btree<P>::node::base_invariant_unique_keys_check() const
prev.first = keys_[0];
prev.second = leaf->keyslice_length(0);
ALWAYS_ASSERT(prev.second <= 9);
ALWAYS_ASSERT(!leaf->value_is_layer(0) || prev.second == 9);
if (!leaf->value_is_layer(0) && prev.second == 9) {
ALWAYS_ASSERT(!leaf->is_layer(0) || prev.second == 9);
if (!leaf->is_layer(0) && prev.second == 9) {
ALWAYS_ASSERT(leaf->suffixes_);
ALWAYS_ASSERT(leaf->suffixes_[0].size() >= 1);
}
Expand All @@ -42,8 +42,8 @@ btree<P>::node::base_invariant_unique_keys_check() const
cur_key.first = keys_[i];
cur_key.second = leaf->keyslice_length(i);
ALWAYS_ASSERT(cur_key.second <= 9);
ALWAYS_ASSERT(!leaf->value_is_layer(i) || cur_key.second == 9);
if (!leaf->value_is_layer(i) && cur_key.second == 9) {
ALWAYS_ASSERT(!leaf->is_layer(i) || cur_key.second == 9);
if (!leaf->is_layer(i) && cur_key.second == 9) {
ALWAYS_ASSERT(leaf->suffixes_);
ALWAYS_ASSERT(leaf->suffixes_[i].size() >= 1);
}
Expand Down Expand Up @@ -136,7 +136,7 @@ btree<P>::leaf_node::invariant_checker_impl(const key_slice *min_key,
ALWAYS_ASSERT(is_root || this->key_slots_used() > 0);
size_t n = this->key_slots_used();
for (size_t i = 0; i < n; i++)
if (this->value_is_layer(i))
if (this->is_layer(i))
this->values_[i].n_->invariant_checker(NULL, NULL, NULL, NULL, true);
}

Expand Down Expand Up @@ -210,7 +210,7 @@ btree<P>::recursive_delete(node *n)
#endif
size_t n = leaf->key_slots_used();
for (size_t i = 0; i < n; i++)
if (leaf->value_is_layer(i))
if (leaf->is_layer(i))
recursive_delete(leaf->values_[i].n_);
leaf_node::deleter(leaf);
} else {
Expand Down Expand Up @@ -278,7 +278,7 @@ btree<P>::search_impl(const key_type &k, value_type &v,
if (ret != -1) {
// found
typename leaf_node::value_or_node_ptr vn = leaf->values_[ret];
const bool is_layer = leaf->value_is_layer(ret);
const bool is_layer = leaf->is_layer(ret);
INVARIANT(!is_layer || kslicelen == 9);
varkey suffix(leaf->suffix(ret));
if (unlikely(!leaf->check_version(version)))
Expand Down Expand Up @@ -434,7 +434,7 @@ btree<P>::search_range_at_layer(
buf.emplace_back(
leaf->keys_[i],
leaf->values_[i],
leaf->value_is_layer(i),
leaf->is_layer(i),
leaf->keyslice_length(i),
leaf->suffix(i));
}
Expand Down Expand Up @@ -653,7 +653,7 @@ btree<P>::tree_walk(tree_walk_callback &callback) const
const size_t n = leaf->key_slots_used();
std::vector<node *> layers;
for (size_t i = 0; i < n; i++)
if (leaf->value_is_layer(i))
if (leaf->is_layer(i))
layers.push_back(leaf->values_[i].n_);
leaf_node *next = leaf->next_;
callback.on_node_begin(leaf);
Expand All @@ -677,7 +677,7 @@ btree<P>::size_walk_callback::on_node_begin(const node_opaque_t *n)
const leaf_node *leaf = (const leaf_node *) n;
const size_t sz = leaf->key_slots_used();
for (size_t i = 0; i < sz; i++)
if (!leaf->value_is_layer(i))
if (!leaf->is_layer(i))
spec_size_++;
}

Expand Down Expand Up @@ -843,7 +843,7 @@ btree<P>::insert0(node *np,
if (lenmatch != -1) {
// exact match case
if (kslicelen <= 8 ||
(!resp_leaf->value_is_layer(lenmatch) &&
(!resp_leaf->is_layer(lenmatch) &&
resp_leaf->suffix(lenmatch) == k.shift())) {
const uint64_t locked_version = resp_leaf->lock();
if (unlikely(!btree::CheckVersion(version, locked_version))) {
Expand All @@ -861,7 +861,7 @@ btree<P>::insert0(node *np,
return UnlockAndReturn(locked_nodes, I_NONE_NOMOD);
}
INVARIANT(kslicelen == 9);
if (resp_leaf->value_is_layer(lenmatch)) {
if (resp_leaf->is_layer(lenmatch)) {
node *subroot = resp_leaf->values_[lenmatch].n_;
INVARIANT(subroot);
if (unlikely(!resp_leaf->check_version(version)))
Expand Down Expand Up @@ -900,7 +900,7 @@ btree<P>::insert0(node *np,
}

INVARIANT(lenmatch != -1);
INVARIANT(resp_leaf->value_is_layer(lenmatch));
INVARIANT(resp_leaf->is_layer(lenmatch));
subroot = resp_leaf->values_[lenmatch].n_;
INVARIANT(subroot->is_modifying());
INVARIANT(subroot->is_lock_owner());
Expand Down Expand Up @@ -1446,7 +1446,7 @@ btree<P>::remove0(node *np,
return UnlockAndReturn(locked_nodes, R_NONE_NOMOD);
}
if (kslicelen == 9) {
if (resp_leaf->value_is_layer(ret)) {
if (resp_leaf->is_layer(ret)) {
node *subroot = resp_leaf->values_[ret].n_;
INVARIANT(subroot);
if (unlikely(!resp_leaf->check_version(version)))
Expand Down Expand Up @@ -1516,7 +1516,7 @@ btree<P>::remove0(node *np,
}
}

//INVARIANT(!resp_leaf->value_is_layer(ret));
//INVARIANT(!resp_leaf->is_layer(ret));
if (n > NMinKeysPerNode) {
const uint64_t locked_version = resp_leaf->lock();
if (unlikely(!btree::CheckVersion(version, locked_version))) {
Expand Down Expand Up @@ -2013,7 +2013,7 @@ btree<P>::NodeStringify(const node_opaque_t *n)
std::vector<std::string> lengths;
for (size_t i = 0; i < leaf->key_slots_used(); i++) {
std::ostringstream inf;
inf << "<l=" << leaf->keyslice_length(i) << ",is_layer=" << leaf->value_is_layer(i) << ">";
inf << "<l=" << leaf->keyslice_length(i) << ",is_layer=" << leaf->is_layer(i) << ">";
lengths.push_back(inf.str());
}
b << ", lengths=" << util::format_list(lengths.begin(), lengths.end());
Expand All @@ -2036,7 +2036,7 @@ btree<P>::ExtractValues(const node_opaque_t *n)
const leaf_node *leaf = (const leaf_node *) n;
const size_t sz = leaf->key_slots_used();
for (size_t i = 0; i < sz; i++)
if (!leaf->value_is_layer(i))
if (!leaf->is_layer(i))
ret.emplace_back(leaf->values_[i].v_, leaf->keyslice_length(i) > 8);
return ret;
}
2 changes: 1 addition & 1 deletion masstree
4 changes: 2 additions & 2 deletions masstree_btree.h
Expand Up @@ -516,7 +516,7 @@ void mbtree<P>::tree_walk(tree_walk_callback &callback) const {
auto version = leaf->stable();
auto perm = leaf->permutation();
for (int i = 0; i != perm.size(); ++i)
if (leaf->value_is_layer(perm[i]))
if (leaf->is_layer(perm[i]))
layers.push_back(leaf->lv_[perm[i]].layer());
leaf_type *next = leaf->safe_next();
callback.on_node_begin(leaf);
Expand Down Expand Up @@ -555,7 +555,7 @@ mbtree<P>::size_walk_callback::on_node_begin(const node_opaque_t *n)
auto perm = n->permutation();
node_size_ = 0;
for (int i = 0; i != perm.size(); ++i)
if (!n->value_is_layer(perm[i]))
if (!n->is_layer(perm[i]))
++node_size_;
}

Expand Down

0 comments on commit 1a83859

Please sign in to comment.