Branchless loop init

This commit is contained in:
doggo 2021-06-05 22:15:01 -05:00
parent 84f835e8b8
commit a6c0595f64

View file

@ -38,12 +38,14 @@ struct User
{ {
uint32_t newLogSize = std::min(pre_log_size * ((log_j.size() / pre_log_size) + 1), max_log_size); uint32_t newLogSize = std::min(pre_log_size * ((log_j.size() / pre_log_size) + 1), max_log_size);
log.data.reserve(newLogSize); log.data.reserve(newLogSize);
for (uint32_t i = std::max(0, log_j.size() - max_log_size); i < log_j.size(); i++) { for (uint32_t i = (log_j.size() - max_log_size) * (log_j.size() > max_log_size); i < log_j.size(); i++)
log.data.push_back(std::move(Transaction( {
log_j[i]["from"].asCString(), log.data.push_back(std::move(Transaction( // Push back because `i` is not at the beginning
log_j[i]["from"].asCString(), // and no array creation with `vector::resize()`
log_j[i]["to"].asCString(), log_j[i]["to"].asCString(),
log_j[i]["amount"].asUInt(), log_j[i]["amount"].asUInt(),
log_j[i]["time"].asUInt64()))); log_j[i]["time"].asUInt64()
)));
} }
} }
} }