Skip to content

Commit c68c0ff

Browse files
committed
Fix useless ctx reload when ctx gen options are specified but kept the same
1 parent d29e9fd commit c68c0ff

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

examples/server/main.cpp

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -910,8 +910,10 @@ bool parse_json_options(nlohmann::json payload, JsonOptions& options) {
910910
for (auto& option : options.string_options) {
911911
try {
912912
if (payload.contains(option.name)) {
913+
if (option.target->compare(payload[option.name].get<std::string>()) != 0) {
914+
has_anything_changed = true;
915+
}
913916
option.target->assign(payload[option.name].get<std::string>());
914-
has_anything_changed = true;
915917
}
916918
} catch (...) {
917919
sd_log(sd_log_level_t::SD_LOG_WARN, "Failed to parse string option: %s\n", option.name.c_str());
@@ -920,8 +922,10 @@ bool parse_json_options(nlohmann::json payload, JsonOptions& options) {
920922
for (auto& option : options.int_options) {
921923
try {
922924
if (payload.contains(option.name)) {
923-
*option.target = payload[option.name].get<int>();
924-
has_anything_changed = true;
925+
if (*option.target != payload[option.name].get<int>()) {
926+
has_anything_changed = true;
927+
}
928+
*option.target = payload[option.name].get<int>();
925929
}
926930
} catch (...) {
927931
sd_log(sd_log_level_t::SD_LOG_WARN, "Failed to parse int option: %s\n", option.name.c_str());
@@ -930,8 +934,10 @@ bool parse_json_options(nlohmann::json payload, JsonOptions& options) {
930934
for (auto& option : options.long_options) {
931935
try {
932936
if (payload.contains(option.name)) {
933-
*option.target = payload[option.name].get<int64_t>();
934-
has_anything_changed = true;
937+
if (*option.target != payload[option.name].get<int64_t>()) {
938+
has_anything_changed = true;
939+
}
940+
*option.target = payload[option.name].get<int64_t>();
935941
}
936942
} catch (...) {
937943
sd_log(sd_log_level_t::SD_LOG_WARN, "Failed to parse long option: %s\n", option.name.c_str());
@@ -940,8 +946,10 @@ bool parse_json_options(nlohmann::json payload, JsonOptions& options) {
940946
for (auto& option : options.float_options) {
941947
try {
942948
if (payload.contains(option.name)) {
943-
*option.target = payload[option.name].get<float>();
944-
has_anything_changed = true;
949+
if (*option.target != payload[option.name].get<float>()) {
950+
has_anything_changed = true;
951+
}
952+
*option.target = payload[option.name].get<float>();
945953
}
946954
} catch (...) {
947955
sd_log(sd_log_level_t::SD_LOG_WARN, "Failed to parse float option: %s\n", option.name.c_str());
@@ -951,8 +959,10 @@ bool parse_json_options(nlohmann::json payload, JsonOptions& options) {
951959
for (auto& option : options.bool_options) {
952960
try {
953961
if (payload.contains(option.name)) {
954-
*option.target = payload[option.name].get<bool>();
955-
has_anything_changed = true;
962+
if (*option.target != payload[option.name].get<bool>()) {
963+
has_anything_changed = true;
964+
}
965+
*option.target = payload[option.name].get<bool>();
956966
}
957967
} catch (...) {
958968
sd_log(sd_log_level_t::SD_LOG_WARN, "Failed to parse bool option: %s\n", option.name.c_str());

0 commit comments

Comments
 (0)