Revision 0454f781c262f8134f6d976295a3290f02724197 authored by Andrew Kryczka on 16 February 2018, 03:30:52 UTC, committed by Facebook Github Bot on 16 February 2018, 03:41:52 UTC
Summary:
Calling `std::vector::reserve()` causes memory to be reallocated and then data to be moved. It was called prior to adding every block. This reallocation could be done a huge amount of times, e.g., for users with large index blocks.

Instead, we can simply use `std::vector::emplace_back()` in such a way that preserves the no-memory-leak guarantee, while letting the vector decide when to reallocate space. Now I see reallocation/moving happen O(logN) times, rather than O(N) times, where N is the final size of vector.
Closes https://github.com/facebook/rocksdb/pull/3508

Differential Revision: D6994228

Pulled By: ajkr

fbshipit-source-id: ab7c11e13ff37c8c6c8249be7a79566a4068cd27
1 parent 989d123
History
File Mode Size
_data
_docs
_includes
_layouts
_posts
_sass
_top-level
blog
css
doc-type-examples
docs
static
.gitignore -rw-r--r-- 57 bytes
CNAME -rw-r--r-- 11 bytes
CONTRIBUTING.md -rw-r--r-- 4.7 KB
Gemfile -rw-r--r-- 59 bytes
Gemfile.lock -rw-r--r-- 3.5 KB
LICENSE-DOCUMENTATION -rw-r--r-- 17.7 KB
README.md -rw-r--r-- 3.1 KB
TEMPLATE-INFORMATION.md -rw-r--r-- 2.5 KB
_config.yml -rw-r--r-- 2.8 KB
feed.xml -rw-r--r-- 1.2 KB
index.md -rw-r--r-- 174 bytes

README.md

back to top