mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-21 12:15:54 +00:00
make keys unique after merge
This commit is contained in:
@@ -574,33 +574,36 @@ CassandraBackend::fetchBookOffers(
|
|||||||
|
|
||||||
assert(lowerComplete);
|
assert(lowerComplete);
|
||||||
|
|
||||||
quality_keys.reserve(originalKeys.size() + otherKeys.size());
|
std::vector<std::pair<std::uint64_t, ripple::uint256>> merged_keys;
|
||||||
|
merged_keys.reserve(originalKeys.size() + otherKeys.size());
|
||||||
std::merge(originalKeys.begin(), originalKeys.end(),
|
std::merge(originalKeys.begin(), originalKeys.end(),
|
||||||
otherKeys.begin(), otherKeys.end(),
|
otherKeys.begin(), otherKeys.end(),
|
||||||
std::back_inserter(quality_keys),
|
std::back_inserter(merged_keys),
|
||||||
[](auto pair1, auto pair2)
|
[](auto pair1, auto pair2)
|
||||||
{
|
{
|
||||||
return pair1.first < pair2.first;
|
return pair1.first < pair2.first;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<ripple::uint256> keys(quality_keys.size());
|
std::vector<ripple::uint256> merged(quality_keys.size());
|
||||||
std::transform(quality_keys.begin(), quality_keys.end(),
|
std::transform(quality_keys.begin(), quality_keys.end(),
|
||||||
std::back_inserter(keys),
|
std::back_inserter(merged),
|
||||||
[](auto pair) { return pair.second; });
|
[](auto pair) { return pair.second; });
|
||||||
|
|
||||||
std::vector<LedgerObject> results;
|
auto uniqEnd = std::unique(merged.begin(), merged.end());
|
||||||
|
std::vector<ripple::uint256> keys{merged.begin(), uniqEnd};
|
||||||
|
|
||||||
|
std::cout << keys.size() << std::endl;
|
||||||
|
|
||||||
auto start = std::chrono::system_clock::now();
|
auto start = std::chrono::system_clock::now();
|
||||||
|
|
||||||
std::vector<Blob> objs = fetchLedgerObjects(keys, ledgerSequence);
|
std::vector<Blob> objs = fetchLedgerObjects(keys, ledgerSequence);
|
||||||
|
|
||||||
auto end = std::chrono::system_clock::now();
|
auto end = std::chrono::system_clock::now();
|
||||||
auto duration = ((end - start).count()) / 1000000000.0;
|
auto duration = ((end - start).count()) / 1000000000.0;
|
||||||
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "Book object fetch took "
|
BOOST_LOG_TRIVIAL(info) << "Book object fetch took "
|
||||||
<< std::to_string(duration) << " seconds.";
|
<< std::to_string(duration) << " seconds.";
|
||||||
|
|
||||||
|
std::vector<LedgerObject> results;
|
||||||
for (size_t i = 0; i < objs.size(); ++i)
|
for (size_t i = 0; i < objs.size(); ++i)
|
||||||
{
|
{
|
||||||
if (objs[i].size() != 0)
|
if (objs[i].size() != 0)
|
||||||
|
|||||||
@@ -456,9 +456,12 @@ PostgresBackend::fetchBookOffers(
|
|||||||
std::optional<std::string> warning)
|
std::optional<std::string> warning)
|
||||||
-> BookOffersPage
|
-> BookOffersPage
|
||||||
{
|
{
|
||||||
std::vector<ripple::uint256> keys(pairs.size());
|
std::vector<ripple::uint256> allKeys(pairs.size());
|
||||||
for (auto const& pair : pairs)
|
for (auto const& pair : pairs)
|
||||||
keys.push_back(pair.second);
|
allKeys.push_back(pair.second);
|
||||||
|
|
||||||
|
auto uniqEnd = std::unique(allKeys.begin(), allKeys.end());
|
||||||
|
std::vector<ripple::uint256> keys{allKeys.begin(), uniqEnd};
|
||||||
|
|
||||||
auto start = std::chrono::system_clock::now();
|
auto start = std::chrono::system_clock::now();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user