diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-05-24 08:43:52 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-05-24 08:43:52 +0200 |
commit | 390d87e974cd5a1cfa4d9bd5917bc1ceafda5d74 (patch) | |
tree | 4c175ce696a4a8a6d236d9d18d7b66e04a090322 /editor | |
parent | 3512d18884df3416608e40f432e173fdfccbc22d (diff) | |
parent | 831b4a5366caf8a0202b2ac2fad641505282915c (diff) | |
download | redot-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.cpp | 3 | ||||
-rw-r--r-- | editor/editor_help.cpp | 2 | ||||
-rw-r--r-- | editor/editor_node.cpp | 18 | ||||
-rw-r--r-- | editor/editor_node.h | 3 | ||||
-rw-r--r-- | editor/editor_themes.cpp | 7 | ||||
-rw-r--r-- | editor/project_manager.cpp | 3 | ||||
-rw-r--r-- | editor/register_editor_types.cpp | 8 |
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"); } |