performance improvements for loops

This commit is contained in:
pantor
2020-08-03 21:09:46 +02:00
parent 44c473538b
commit 6d46bf6fbf
2 changed files with 8 additions and 4 deletions
+4 -2
View File
@@ -500,16 +500,17 @@ class Renderer : public NodeVisitor {
(*current_loop_data)["parent"] = std::move(tmp);
}
size_t index = 0;
for (auto it = result->begin(); it != result->end(); ++it) {
json_loop_data[static_cast<std::string>(node.value)] = *it;
size_t index = std::distance(result->begin(), it);
(*current_loop_data)["index"] = index;
(*current_loop_data)["index1"] = index + 1;
(*current_loop_data)["is_first"] = (index == 0);
(*current_loop_data)["is_last"] = (index == result->size() - 1);
node.body.accept(*this);
++index;
}
json_loop_data[static_cast<std::string>(node.value)].clear();
@@ -531,17 +532,18 @@ class Renderer : public NodeVisitor {
(*current_loop_data)["parent"] = std::move(*current_loop_data);
}
size_t index = 0;
for (auto it = result->begin(); it != result->end(); ++it) {
json_loop_data[static_cast<std::string>(node.key)] = it.key();
json_loop_data[static_cast<std::string>(node.value)] = it.value();
size_t index = std::distance(result->begin(), it);
(*current_loop_data)["index"] = index;
(*current_loop_data)["index1"] = index + 1;
(*current_loop_data)["is_first"] = (index == 0);
(*current_loop_data)["is_last"] = (index == result->size() - 1);
node.body.accept(*this);
++index;
}
json_loop_data[static_cast<std::string>(node.key)].clear();
+4 -2
View File
@@ -3759,16 +3759,17 @@ class Renderer : public NodeVisitor {
(*current_loop_data)["parent"] = std::move(tmp);
}
size_t index = 0;
for (auto it = result->begin(); it != result->end(); ++it) {
json_loop_data[static_cast<std::string>(node.value)] = *it;
size_t index = std::distance(result->begin(), it);
(*current_loop_data)["index"] = index;
(*current_loop_data)["index1"] = index + 1;
(*current_loop_data)["is_first"] = (index == 0);
(*current_loop_data)["is_last"] = (index == result->size() - 1);
node.body.accept(*this);
++index;
}
json_loop_data[static_cast<std::string>(node.value)].clear();
@@ -3790,17 +3791,18 @@ class Renderer : public NodeVisitor {
(*current_loop_data)["parent"] = std::move(*current_loop_data);
}
size_t index = 0;
for (auto it = result->begin(); it != result->end(); ++it) {
json_loop_data[static_cast<std::string>(node.key)] = it.key();
json_loop_data[static_cast<std::string>(node.value)] = it.value();
size_t index = std::distance(result->begin(), it);
(*current_loop_data)["index"] = index;
(*current_loop_data)["index1"] = index + 1;
(*current_loop_data)["is_first"] = (index == 0);
(*current_loop_data)["is_last"] = (index == result->size() - 1);
node.body.accept(*this);
++index;
}
json_loop_data[static_cast<std::string>(node.key)].clear();