mirror of
https://git.wownero.com/wownero/wownero.git
synced 2024-08-15 01:03:23 +00:00
Merge pull request #4270
29dea03
epee: resize vectors where possible in serialization (moneromooo-monero)76affd9
epee: some speedup in parsing (moneromooo-monero)dc6c069
db_lmdb: speedup the get_output_distribution common case (moneromooo-monero)76ac5a8
wallet2: ask for a binary output distribution, for speed (moneromooo-monero)
This commit is contained in:
commit
77ed11e627
4 changed files with 29 additions and 3 deletions
|
@ -35,6 +35,11 @@
|
|||
|
||||
namespace epee
|
||||
{
|
||||
namespace
|
||||
{
|
||||
template<class C> void hint_resize(C &container, size_t size) {}
|
||||
template<class C> void hint_resize(std::vector<C> &container, size_t size) { container.reserve(size); }
|
||||
}
|
||||
namespace serialization
|
||||
{
|
||||
|
||||
|
@ -158,6 +163,7 @@ namespace epee
|
|||
false,
|
||||
"size in blob " << loaded_size << " not have not zero modulo for sizeof(value_type) = " << sizeof(typename stl_container::value_type) << ", type " << typeid(typename stl_container::value_type).name());
|
||||
size_t count = (loaded_size/sizeof(typename stl_container::value_type));
|
||||
hint_resize(container, count);
|
||||
for(size_t i = 0; i < count; i++)
|
||||
container.insert(container.end(), *(pelem++));
|
||||
}
|
||||
|
|
|
@ -28,6 +28,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
namespace epee
|
||||
{
|
||||
namespace misc_utils
|
||||
|
@ -36,8 +38,12 @@ namespace misc_utils
|
|||
{
|
||||
inline std::string transform_to_escape_sequence(const std::string& src)
|
||||
{
|
||||
//std::stringstream res;
|
||||
static const char escaped[] = "\b\f\n\r\t\v\"\\/";
|
||||
if (std::find_first_of(src.begin(), src.end(), escaped, escaped + sizeof(escaped)) == src.end())
|
||||
return src;
|
||||
|
||||
std::string res;
|
||||
res.reserve(2 * src.size());
|
||||
for(std::string::const_iterator it = src.begin(); it!=src.end(); ++it)
|
||||
{
|
||||
switch(*it)
|
||||
|
@ -84,6 +90,7 @@ namespace misc_utils
|
|||
inline void match_string2(std::string::const_iterator& star_end_string, std::string::const_iterator buf_end, std::string& val)
|
||||
{
|
||||
val.clear();
|
||||
val.reserve(std::distance(star_end_string, buf_end));
|
||||
bool escape_mode = false;
|
||||
std::string::const_iterator it = star_end_string;
|
||||
++it;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue