diff options
author | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2022-03-14 00:44:19 +0100 |
---|---|---|
committer | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2022-03-15 18:54:51 +0100 |
commit | 38995961dfbbd656f038e107fca75d94a71aa81a (patch) | |
tree | 6d02e4878717907b58096e106217a5cdc90d7729 /core/string | |
parent | 7a454842d4bb2c5f96a986df21a97888e1649887 (diff) |
Improve `--debug-stringnames` to be more useful
- Print all StringNames, not just the top 100.
- Print statistics at the end of the list of StringNames,
with unreferenced and rarely referenced StringNames.
- List the CLI argument in `--help` and shell completion.
Diffstat (limited to 'core/string')
-rw-r--r-- | core/string/string_name.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/core/string/string_name.cpp b/core/string/string_name.cpp index 11674629fc..2e941b8037 100644 --- a/core/string/string_name.cpp +++ b/core/string/string_name.cpp @@ -73,11 +73,23 @@ void StringName::cleanup() { d = d->next; } } - print_line("\nStringName Reference Ranking:\n"); + + print_line("\nStringName reference ranking (from most to least referenced):\n"); + data.sort_custom<DebugSortReferences>(); - for (int i = 0; i < MIN(100, data.size()); i++) { + int unreferenced_stringnames = 0; + int rarely_referenced_stringnames = 0; + for (int i = 0; i < data.size(); i++) { print_line(itos(i + 1) + ": " + data[i]->get_name() + " - " + itos(data[i]->debug_references)); + if (data[i]->debug_references == 0) { + unreferenced_stringnames += 1; + } else if (data[i]->debug_references < 5) { + rarely_referenced_stringnames += 1; + } } + + print_line(vformat("\nOut of %d StringNames, %d StringNames were never referenced during this run (0 times) (%.2f%%).", data.size(), unreferenced_stringnames, unreferenced_stringnames / float(data.size()) * 100)); + print_line(vformat("Out of %d StringNames, %d StringNames were rarely referenced during this run (1-4 times) (%.2f%%).", data.size(), rarely_referenced_stringnames, rarely_referenced_stringnames / float(data.size()) * 100)); } #endif int lost_strings = 0; |