From 899851bec3cdfa52d1f00498cfb77dce7469d261 Mon Sep 17 00:00:00 2001 From: EntireTwix Date: Thu, 3 Jun 2021 02:19:05 -0700 Subject: [PATCH] :sparkles: Simplified and Commented log end->size --- include/log.hpp | 28 +++++++++++----------------- include/user.hpp | 12 ++++++------ 2 files changed, 17 insertions(+), 23 deletions(-) diff --git a/include/log.hpp b/include/log.hpp index 2c10d72..d8aa642 100644 --- a/include/log.hpp +++ b/include/log.hpp @@ -10,39 +10,33 @@ struct Log uint32_t end = 0; void AddTrans(Transaction &&v) { - if(data.size()) + end += (end < max_log_size); //branchless + if (data.size() <= end && end < max_log_size) //if memory reserved is full and max isnt reached { - end += (end + 1 < max_log_size); //branchless - } - if (data.size() <= end + 1 && end + 1 < max_log_size) //if memory reserved is full - { - if (data.size() + pre_log_size > max_log_size) + if (data.size() + pre_log_size > max_log_size) //if prefetched memory is larger then max { - data.resize(max_log_size); + data.resize(max_log_size); //just allocate max } else { data.resize(data.size() + pre_log_size); //prefetching memory } } - for (uint32_t i = end; i > 0; --i) + for (uint32_t i = end - 1; i > 0; --i) //size: 10, 9-1, all moved to the right one { data[i] = std::move(data[i - 1]); } - data[0] = std::move(v); + data[0] = std::move(v); //override first } Json::Value Serialize() const { Json::Value res; - if(data.size()) + for (uint32_t i = 0; i < end; ++i) { - for (uint32_t i = 0; i < end + 1; ++i) - { - res[i]["to"] = data[i].to; - res[i]["from"] = data[i].from; - res[i]["amount"] = (Json::UInt)data[i].amount; - res[i]["time"] = (Json::UInt64)data[i].time; - } + res[i]["to"] = data[i].to; + res[i]["from"] = data[i].from; + res[i]["amount"] = (Json::UInt)data[i].amount; + res[i]["time"] = (Json::UInt64)data[i].time; } return res; } diff --git a/include/user.hpp b/include/user.hpp index ca52299..0b99cd4 100644 --- a/include/user.hpp +++ b/include/user.hpp @@ -35,17 +35,17 @@ struct User { if (log_j.size()) { - if (max_log_size > (log_j.size() + pre_log_size)) + if (max_log_size > (log_j.size() + pre_log_size)) //if current imported log's size + prefetch amount is less then max { - log.data.resize(log_j.size() + pre_log_size - 1); - log.end = log_j.size() - 1; + log.data.resize(log_j.size() + pre_log_size); //allocate that amount + log.end = log_j.size(); } else { - log.data.resize(max_log_size); - log.end = max_log_size - 1; + log.data.resize(max_log_size); //allocate max amount + log.end = max_log_size; } - for (uint32_t i = 0; i < log.end + 1; ++i) + for (uint32_t i = 0; i < log.end; ++i) { log.data[i] = std::move(Transaction(log_j[i]["from"].asCString(), log_j[i]["to"].asCString(), log_j[i]["amount"].asUInt(), log_j[i]["time"].asUInt64())); }