diff options
author | Leif Walsh <leif.walsh@gmail.com> | 2014-05-23 14:02:53 -0400 |
---|---|---|
committer | Leif Walsh <leif.walsh@gmail.com> | 2014-05-23 14:02:53 -0400 |
commit | 598105c433bc55ee0b4fb8fbf5ffaaa2f9a63a35 (patch) | |
tree | da9990cdf0cb4e1fc97b93f54e9ccc70435a5ffd | |
parent | 1e9f2f07b987f7ba89a9bb4d9f36d0ed1a07f015 (diff) | |
download | mariadb-git-598105c433bc55ee0b4fb8fbf5ffaaa2f9a63a35.tar.gz |
vectorized loops in new deserialization code #226
also a typo
-rw-r--r-- | ft/ft_node-serialize.cc | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/ft/ft_node-serialize.cc b/ft/ft_node-serialize.cc index 2eca2891bbc..4e4f231c21d 100644 --- a/ft/ft_node-serialize.cc +++ b/ft/ft_node-serialize.cc @@ -1112,7 +1112,7 @@ deserialize_child_buffer_v26(NONLEAF_CHILDINFO bnc, struct rbuf *rbuf, } } -// effect: deserialize a single message from rbuf and enque the result into the given fifo +// effect: deserialize a single message from rbuf and enqueue the result into the given fifo static void fifo_deserialize_msg_from_rbuf(FIFO fifo, struct rbuf *rbuf) { bytevec key, val; @@ -1144,16 +1144,25 @@ deserialize_child_buffer(NONLEAF_CHILDINFO bnc, struct rbuf *rbuf) { // read in each message tree (fresh, stale, broadcast) nfresh = rbuf_int(rbuf); + bytevec fresh_offsets_src_v; + rbuf_literal_bytes(rbuf, &fresh_offsets_v, nfresh * (sizeof *fresh_offsets)); + const int32_t *fresh_offsets_src = (const int32_t *) fresh_offsets_src_v; for (int i = 0; i < nfresh; i++) { - fresh_offsets[i] = rbuf_int(rbuf); + fresh_offsets[i] = toku_dtoh32(fresh_offsets_src[i]); } nstale = rbuf_int(rbuf); + bytevec stale_offsets_src_v; + rbuf_literal_bytes(rbuf, &stale_offsets_v, nstale * (sizeof *stale_offsets)); + const int32_t *stale_offsets_src = (const int32_t *) stale_offsets_src_v; for (int i = 0; i < nstale; i++) { - stale_offsets[i] = rbuf_int(rbuf); + stale_offsets[i] = toku_dtoh32(stale_offsets_src[i]); } nbroadcast_offsets = rbuf_int(rbuf); + bytevec broadcast_offsets_src_v; + rbuf_literal_bytes(rbuf, &broadcast_offsets_v, nbroadcast_offsets * (sizeof *broadcast_offsets)); + const int32_t *broadcast_offsets_src = (const int32_t *) broadcast_offsets_src_v; for (int i = 0; i < nbroadcast_offsets; i++) { - broadcast_offsets[i] = rbuf_int(rbuf); + broadcast_offsets[i] = toku_dtoh32(broadcast_offsets_src[i]); } // build OMTs out of each offset array |