summaryrefslogtreecommitdiffstats
path: root/editor
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-05-24 08:43:52 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-05-24 08:43:52 +0200
commit390d87e974cd5a1cfa4d9bd5917bc1ceafda5d74 (patch)
tree4c175ce696a4a8a6d236d9d18d7b66e04a090322 /editor
parent3512d18884df3416608e40f432e173fdfccbc22d (diff)
parent831b4a5366caf8a0202b2ac2fad641505282915c (diff)
downloadredot-engine-390d87e974cd5a1cfa4d9bd5917bc1ceafda5d74.tar.gz
Merge pull request #71352 from m4gr3d/editor_optimization_main
Improve startup benchmarking
Diffstat (limited to 'editor')
-rw-r--r--editor/editor_fonts.cpp3
-rw-r--r--editor/editor_help.cpp2
-rw-r--r--editor/editor_node.cpp18
-rw-r--r--editor/editor_node.h3
-rw-r--r--editor/editor_themes.cpp7
-rw-r--r--editor/project_manager.cpp3
-rw-r--r--editor/register_editor_types.cpp8
7 files changed, 28 insertions, 16 deletions
diff --git a/editor/editor_fonts.cpp b/editor/editor_fonts.cpp
index dfcb083ef9..74616bc0ce 100644
--- a/editor/editor_fonts.cpp
+++ b/editor/editor_fonts.cpp
@@ -107,6 +107,7 @@ Ref<FontVariation> make_bold_font(const Ref<Font> &p_font, double p_embolden, Ty
}
void editor_register_fonts(Ref<Theme> p_theme) {
+ OS::get_singleton()->benchmark_begin_measure("editor_register_fonts");
Ref<DirAccess> dir = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
TextServer::FontAntialiasing font_antialiasing = (TextServer::FontAntialiasing)(int)EDITOR_GET("interface/editor/font_antialiasing");
@@ -443,4 +444,6 @@ void editor_register_fonts(Ref<Theme> p_theme) {
p_theme->set_font_size("status_source_size", "EditorFonts", default_font_size);
p_theme->set_font("status_source", "EditorFonts", mono_other_fc);
+
+ OS::get_singleton()->benchmark_end_measure("editor_register_fonts");
}
diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp
index 2ddde4e507..2b8cace2f1 100644
--- a/editor/editor_help.cpp
+++ b/editor/editor_help.cpp
@@ -2297,6 +2297,7 @@ void EditorHelp::_gen_doc_thread(void *p_udata) {
static bool doc_gen_use_threads = true;
void EditorHelp::generate_doc(bool p_use_cache) {
+ OS::get_singleton()->benchmark_begin_measure("EditorHelp::generate_doc");
if (doc_gen_use_threads) {
// In case not the first attempt.
_wait_for_thread();
@@ -2327,6 +2328,7 @@ void EditorHelp::generate_doc(bool p_use_cache) {
_gen_doc_thread(nullptr);
}
}
+ OS::get_singleton()->benchmark_end_measure("EditorHelp::generate_doc");
}
void EditorHelp::_toggle_scripts_pressed() {
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index c9f356b82c..ce7702d5b0 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -1041,7 +1041,7 @@ void EditorNode::_sources_changed(bool p_exist) {
if (waiting_for_first_scan) {
waiting_for_first_scan = false;
- Engine::get_singleton()->startup_benchmark_end_measure(); // editor_scan_and_reimport
+ OS::get_singleton()->benchmark_end_measure("editor_scan_and_import");
// Reload the global shader variables, but this time
// loading textures, as they are now properly imported.
@@ -1055,16 +1055,12 @@ void EditorNode::_sources_changed(bool p_exist) {
_load_editor_layout();
if (!defer_load_scene.is_empty()) {
- Engine::get_singleton()->startup_benchmark_begin_measure("editor_load_scene");
+ OS::get_singleton()->benchmark_begin_measure("editor_load_scene");
load_scene(defer_load_scene);
defer_load_scene = "";
- Engine::get_singleton()->startup_benchmark_end_measure();
+ OS::get_singleton()->benchmark_end_measure("editor_load_scene");
- if (use_startup_benchmark) {
- Engine::get_singleton()->startup_dump(startup_benchmark_file);
- startup_benchmark_file = String();
- use_startup_benchmark = false;
- }
+ OS::get_singleton()->benchmark_dump();
}
}
}
@@ -4392,13 +4388,9 @@ void EditorNode::_editor_file_dialog_unregister(EditorFileDialog *p_dialog) {
Vector<EditorNodeInitCallback> EditorNode::_init_callbacks;
void EditorNode::_begin_first_scan() {
- Engine::get_singleton()->startup_benchmark_begin_measure("editor_scan_and_import");
+ OS::get_singleton()->benchmark_begin_measure("editor_scan_and_import");
EditorFileSystem::get_singleton()->scan();
}
-void EditorNode::set_use_startup_benchmark(bool p_use_startup_benchmark, const String &p_startup_benchmark_file) {
- use_startup_benchmark = p_use_startup_benchmark;
- startup_benchmark_file = p_startup_benchmark_file;
-}
Error EditorNode::export_preset(const String &p_preset, const String &p_path, bool p_debug, bool p_pack_only) {
export_defer.preset = p_preset;
diff --git a/editor/editor_node.h b/editor/editor_node.h
index 814899e169..66da019560 100644
--- a/editor/editor_node.h
+++ b/editor/editor_node.h
@@ -694,8 +694,6 @@ private:
void _bottom_panel_raise_toggled(bool);
void _begin_first_scan();
- bool use_startup_benchmark = false;
- String startup_benchmark_file;
protected:
friend class FileSystemDock;
@@ -871,7 +869,6 @@ public:
void _copy_warning(const String &p_str);
- void set_use_startup_benchmark(bool p_use_startup_benchmark, const String &p_startup_benchmark_file);
Error export_preset(const String &p_preset, const String &p_path, bool p_debug, bool p_pack_only);
Control *get_gui_base() { return gui_base; }
diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp
index aa98eb6103..25749a9589 100644
--- a/editor/editor_themes.cpp
+++ b/editor/editor_themes.cpp
@@ -281,6 +281,7 @@ float get_gizmo_handle_scale(const String &gizmo_handle_name = "") {
}
void editor_register_and_generate_icons(Ref<Theme> p_theme, bool p_dark_theme, float p_icon_saturation, int p_thumb_size, bool p_only_thumbs = false) {
+ OS::get_singleton()->benchmark_begin_measure("editor_register_and_generate_icons_" + String((p_only_thumbs ? "with_only_thumbs" : "all")));
// Before we register the icons, we adjust their colors and saturation.
// Most icons follow the standard rules for color conversion to follow the editor
// theme's polarity (dark/light). We also adjust the saturation for most icons,
@@ -408,9 +409,11 @@ void editor_register_and_generate_icons(Ref<Theme> p_theme, bool p_dark_theme, f
p_theme->set_icon(editor_icons_names[index], SNAME("EditorIcons"), icon);
}
}
+ OS::get_singleton()->benchmark_end_measure("editor_register_and_generate_icons_" + String((p_only_thumbs ? "with_only_thumbs" : "all")));
}
Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
+ OS::get_singleton()->benchmark_begin_measure("create_editor_theme");
Ref<Theme> theme = Ref<Theme>(memnew(Theme));
// Controls may rely on the scale for their internal drawing logic.
@@ -2093,10 +2096,13 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_color("search_result_color", "CodeEdit", EDITOR_GET("text_editor/theme/highlighting/search_result_color"));
theme->set_color("search_result_border_color", "CodeEdit", EDITOR_GET("text_editor/theme/highlighting/search_result_border_color"));
+ OS::get_singleton()->benchmark_end_measure("create_editor_theme");
+
return theme;
}
Ref<Theme> create_custom_theme(const Ref<Theme> p_theme) {
+ OS::get_singleton()->benchmark_begin_measure("create_custom_theme");
Ref<Theme> theme = create_editor_theme(p_theme);
const String custom_theme_path = EDITOR_GET("interface/theme/custom_theme");
@@ -2107,6 +2113,7 @@ Ref<Theme> create_custom_theme(const Ref<Theme> p_theme) {
}
}
+ OS::get_singleton()->benchmark_end_measure("create_custom_theme");
return theme;
}
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp
index 52e6b478f9..da196d8de9 100644
--- a/editor/project_manager.cpp
+++ b/editor/project_manager.cpp
@@ -1963,6 +1963,9 @@ Ref<Texture2D> ProjectManager::_file_dialog_get_thumbnail(const String &p_path)
}
void ProjectManager::_build_icon_type_cache(Ref<Theme> p_theme) {
+ if (p_theme.is_null()) {
+ return;
+ }
List<StringName> tl;
p_theme->get_icon_list(SNAME("EditorIcons"), &tl);
for (List<StringName>::Element *E = tl.front(); E; E = E->next()) {
diff --git a/editor/register_editor_types.cpp b/editor/register_editor_types.cpp
index 758565b266..0dd11d8948 100644
--- a/editor/register_editor_types.cpp
+++ b/editor/register_editor_types.cpp
@@ -116,6 +116,8 @@
#include "editor/register_exporters.h"
void register_editor_types() {
+ OS::get_singleton()->benchmark_begin_measure("register_editor_types");
+
ResourceLoader::set_timestamp_on_load(true);
ResourceSaver::set_timestamp_on_save(true);
@@ -245,13 +247,19 @@ void register_editor_types() {
GLOBAL_DEF("editor/version_control/autoload_on_startup", false);
EditorInterface::create();
+
+ OS::get_singleton()->benchmark_end_measure("register_editor_types");
}
void unregister_editor_types() {
+ OS::get_singleton()->benchmark_begin_measure("unregister_editor_types");
+
EditorNode::cleanup();
EditorInterface::free();
if (EditorPaths::get_singleton()) {
EditorPaths::free();
}
+
+ OS::get_singleton()->benchmark_end_measure("unregister_editor_types");
}