De-duplicate fmt and format functions and optimize
Just use a single function, also only one buffer is required for the operation, no need to copy. Signed-off-by: Eric Curtin <ecurtin@redhat.com>
This commit is contained in:
parent
d92cb67e37
commit
2991954b7d
1 changed files with 10 additions and 26 deletions
|
@ -38,24 +38,6 @@
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
GGML_ATTRIBUTE_FORMAT(1, 2)
|
|
||||||
static std::string fmt(const char * fmt, ...) {
|
|
||||||
va_list ap;
|
|
||||||
va_list ap2;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
va_copy(ap2, ap);
|
|
||||||
const int size = vsnprintf(NULL, 0, fmt, ap);
|
|
||||||
GGML_ASSERT(size >= 0 && size < INT_MAX); // NOLINT
|
|
||||||
std::string buf;
|
|
||||||
buf.resize(size);
|
|
||||||
const int size2 = vsnprintf(const_cast<char *>(buf.data()), buf.size() + 1, fmt, ap2);
|
|
||||||
GGML_ASSERT(size2 == size);
|
|
||||||
va_end(ap2);
|
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
GGML_ATTRIBUTE_FORMAT(1, 2)
|
GGML_ATTRIBUTE_FORMAT(1, 2)
|
||||||
static int printe(const char * fmt, ...) {
|
static int printe(const char * fmt, ...) {
|
||||||
va_list args;
|
va_list args;
|
||||||
|
@ -445,11 +427,11 @@ class HttpClient {
|
||||||
int secs = static_cast<int>(seconds) % 60;
|
int secs = static_cast<int>(seconds) % 60;
|
||||||
|
|
||||||
if (hrs > 0) {
|
if (hrs > 0) {
|
||||||
return fmt("%dh %02dm %02ds", hrs, mins, secs);
|
return string_format("%dh %02dm %02ds", hrs, mins, secs);
|
||||||
} else if (mins > 0) {
|
} else if (mins > 0) {
|
||||||
return fmt("%dm %02ds", mins, secs);
|
return string_format("%dm %02ds", mins, secs);
|
||||||
} else {
|
} else {
|
||||||
return fmt("%ds", secs);
|
return string_format("%ds", secs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -464,7 +446,7 @@ class HttpClient {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt("%.2f %s", dbl_size, suffix[i]);
|
return string_format("%.2f %s", dbl_size, suffix[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int update_progress(void * ptr, curl_off_t total_to_download, curl_off_t now_downloaded, curl_off_t,
|
static int update_progress(void * ptr, curl_off_t total_to_download, curl_off_t now_downloaded, curl_off_t,
|
||||||
|
@ -498,7 +480,9 @@ class HttpClient {
|
||||||
return (now_downloaded_plus_file_size * 100) / total_to_download;
|
return (now_downloaded_plus_file_size * 100) / total_to_download;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::string generate_progress_prefix(curl_off_t percentage) { return fmt("%3ld%% |", static_cast<long int>(percentage)); }
|
static std::string generate_progress_prefix(curl_off_t percentage) {
|
||||||
|
return string_format("%3ld%% |", static_cast<long int>(percentage));
|
||||||
|
}
|
||||||
|
|
||||||
static double calculate_speed(curl_off_t now_downloaded, const std::chrono::steady_clock::time_point & start_time) {
|
static double calculate_speed(curl_off_t now_downloaded, const std::chrono::steady_clock::time_point & start_time) {
|
||||||
const auto now = std::chrono::steady_clock::now();
|
const auto now = std::chrono::steady_clock::now();
|
||||||
|
@ -509,9 +493,9 @@ class HttpClient {
|
||||||
static std::string generate_progress_suffix(curl_off_t now_downloaded_plus_file_size, curl_off_t total_to_download,
|
static std::string generate_progress_suffix(curl_off_t now_downloaded_plus_file_size, curl_off_t total_to_download,
|
||||||
double speed, double estimated_time) {
|
double speed, double estimated_time) {
|
||||||
const int width = 10;
|
const int width = 10;
|
||||||
return fmt("%*s/%*s%*s/s%*s", width, human_readable_size(now_downloaded_plus_file_size).c_str(), width,
|
return string_format("%*s/%*s%*s/s%*s", width, human_readable_size(now_downloaded_plus_file_size).c_str(),
|
||||||
human_readable_size(total_to_download).c_str(), width, human_readable_size(speed).c_str(), width,
|
width, human_readable_size(total_to_download).c_str(), width,
|
||||||
human_readable_time(estimated_time).c_str());
|
human_readable_size(speed).c_str(), width, human_readable_time(estimated_time).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
static int calculate_progress_bar_width(const std::string & progress_prefix, const std::string & progress_suffix) {
|
static int calculate_progress_bar_width(const std::string & progress_prefix, const std::string & progress_suffix) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue