Fix display of large sizes in the editor monitors

Unlike the old custom method, the `String::humanize_size()`
method works well with file sizes above 2 GB.

This also tweaks the suffixes for spacing consistency and
uses the correct acronym for exabytes (EB).

This closes #29610.
This commit is contained in:
Hugo Locurcio 2019-06-08 21:57:55 +02:00
parent abbbde87e2
commit 746bfc3662
No known key found for this signature in database
GPG key ID: 39E8F8BE30B0A49C
2 changed files with 3 additions and 15 deletions

View file

@ -3235,7 +3235,7 @@ static int _humanize_digits(int p_num) {
String String::humanize_size(size_t p_size) { String String::humanize_size(size_t p_size) {
uint64_t _div = 1; uint64_t _div = 1;
static const char *prefix[] = { " Bytes", " KB", " MB", " GB", "TB", " PB", "HB", "" }; static const char *prefix[] = { " Bytes", " KB", " MB", " GB", " TB", " PB", " EB", "" };
int prefix_idx = 0; int prefix_idx = 0;
while (p_size > (_div * 1024) && prefix[prefix_idx][0]) { while (p_size > (_div * 1024) && prefix[prefix_idx][0]) {

View file

@ -727,20 +727,8 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
String tt = vs; String tt = vs;
switch (Performance::MonitorType((int)perf_items[i]->get_metadata(1))) { switch (Performance::MonitorType((int)perf_items[i]->get_metadata(1))) {
case Performance::MONITOR_TYPE_MEMORY: { case Performance::MONITOR_TYPE_MEMORY: {
// for the time being, going above GBs is a bad sign. vs = String::humanize_size(v);
String unit = "B"; tt = vs;
if ((int)v > 1073741824) {
unit = "GB";
v /= 1073741824.0;
} else if ((int)v > 1048576) {
unit = "MB";
v /= 1048576.0;
} else if ((int)v > 1024) {
unit = "KB";
v /= 1024.0;
}
tt += " bytes";
vs = String::num(v, 2) + " " + unit;
} break; } break;
case Performance::MONITOR_TYPE_TIME: { case Performance::MONITOR_TYPE_TIME: {
tt += " seconds"; tt += " seconds";