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:
parent
abbbde87e2
commit
746bfc3662
2 changed files with 3 additions and 15 deletions
|
@ -3235,7 +3235,7 @@ static int _humanize_digits(int p_num) {
|
|||
String String::humanize_size(size_t p_size) {
|
||||
|
||||
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;
|
||||
|
||||
while (p_size > (_div * 1024) && prefix[prefix_idx][0]) {
|
||||
|
|
|
@ -727,20 +727,8 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
|
|||
String tt = vs;
|
||||
switch (Performance::MonitorType((int)perf_items[i]->get_metadata(1))) {
|
||||
case Performance::MONITOR_TYPE_MEMORY: {
|
||||
// for the time being, going above GBs is a bad sign.
|
||||
String unit = "B";
|
||||
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;
|
||||
vs = String::humanize_size(v);
|
||||
tt = vs;
|
||||
} break;
|
||||
case Performance::MONITOR_TYPE_TIME: {
|
||||
tt += " seconds";
|
||||
|
|
Loading…
Reference in a new issue