Integrate performance monitoring across various editors
- Added performance monitoring capabilities using ScopedTimer in the DungeonEditor, PaletteEditor, ScreenEditor, MessageEditor, MusicEditor, SpriteEditor, and SettingsEditor classes to track loading times. - Enhanced the Load methods in each editor to include timing for critical operations, improving performance analysis and optimization. - Removed unnecessary debug output in the Sprite class to clean up the codebase.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#include "dungeon_editor.h"
|
||||
|
||||
#include "absl/strings/str_format.h"
|
||||
#include "app/core/performance_monitor.h"
|
||||
#include "app/core/window.h"
|
||||
#include "app/gfx/arena.h"
|
||||
#include "app/gfx/snes_palette.h"
|
||||
@@ -46,6 +47,8 @@ void DungeonEditor::Initialize() {
|
||||
}
|
||||
|
||||
absl::Status DungeonEditor::Load() {
|
||||
core::ScopedTimer timer("DungeonEditor::Load");
|
||||
|
||||
if (!rom_ || !rom_->is_loaded()) {
|
||||
return absl::FailedPreconditionError("ROM not loaded");
|
||||
}
|
||||
@@ -53,22 +56,38 @@ absl::Status DungeonEditor::Load() {
|
||||
auto dungeon_man_pal_group = rom()->palette_group().dungeon_main;
|
||||
|
||||
// Use room loader component for loading rooms
|
||||
RETURN_IF_ERROR(room_loader_.LoadAllRooms(rooms_));
|
||||
RETURN_IF_ERROR(room_loader_.LoadRoomEntrances(entrances_));
|
||||
{
|
||||
core::ScopedTimer rooms_timer("DungeonEditor::LoadAllRooms");
|
||||
RETURN_IF_ERROR(room_loader_.LoadAllRooms(rooms_));
|
||||
}
|
||||
|
||||
{
|
||||
core::ScopedTimer entrances_timer("DungeonEditor::LoadRoomEntrances");
|
||||
RETURN_IF_ERROR(room_loader_.LoadRoomEntrances(entrances_));
|
||||
}
|
||||
|
||||
// Load the palette group and palette for the dungeon
|
||||
full_palette_ = dungeon_man_pal_group[current_palette_group_id_];
|
||||
ASSIGN_OR_RETURN(current_palette_group_,
|
||||
gfx::CreatePaletteGroupFromLargePalette(full_palette_));
|
||||
{
|
||||
core::ScopedTimer palette_timer("DungeonEditor::LoadPalettes");
|
||||
full_palette_ = dungeon_man_pal_group[current_palette_group_id_];
|
||||
ASSIGN_OR_RETURN(current_palette_group_,
|
||||
gfx::CreatePaletteGroupFromLargePalette(full_palette_));
|
||||
}
|
||||
|
||||
// Calculate usage statistics
|
||||
usage_tracker_.CalculateUsageStats(rooms_);
|
||||
{
|
||||
core::ScopedTimer usage_timer("DungeonEditor::CalculateUsageStats");
|
||||
usage_tracker_.CalculateUsageStats(rooms_);
|
||||
}
|
||||
|
||||
// Initialize the new editor system
|
||||
if (dungeon_editor_system_) {
|
||||
auto status = dungeon_editor_system_->Initialize();
|
||||
if (!status.ok()) {
|
||||
return status;
|
||||
{
|
||||
core::ScopedTimer init_timer("DungeonEditor::InitializeSystem");
|
||||
if (dungeon_editor_system_) {
|
||||
auto status = dungeon_editor_system_->Initialize();
|
||||
if (!status.ok()) {
|
||||
return status;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "absl/status/status.h"
|
||||
#include "absl/strings/str_cat.h"
|
||||
#include "app/core/performance_monitor.h"
|
||||
#include "app/gfx/snes_palette.h"
|
||||
#include "app/gui/color.h"
|
||||
#include "imgui/imgui.h"
|
||||
@@ -171,6 +172,8 @@ absl::Status DisplayPalette(gfx::SnesPalette& palette, bool loaded) {
|
||||
void PaletteEditor::Initialize() {}
|
||||
|
||||
absl::Status PaletteEditor::Load() {
|
||||
core::ScopedTimer timer("PaletteEditor::Load");
|
||||
|
||||
if (rom()->is_loaded()) {
|
||||
// Initialize the labels
|
||||
for (int i = 0; i < kNumPalettes; i++) {
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
#include "absl/strings/str_format.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "app/core/performance_monitor.h"
|
||||
#include "app/core/platform/file_dialog.h"
|
||||
#include "app/core/window.h"
|
||||
#include "app/gfx/arena.h"
|
||||
@@ -29,6 +30,8 @@ constexpr uint32_t kRedPen = 0xFF0000FF;
|
||||
void ScreenEditor::Initialize() {}
|
||||
|
||||
absl::Status ScreenEditor::Load() {
|
||||
core::ScopedTimer timer("ScreenEditor::Load");
|
||||
|
||||
ASSIGN_OR_RETURN(dungeon_maps_,
|
||||
zelda3::LoadDungeonMaps(*rom(), dungeon_map_labels_));
|
||||
RETURN_IF_ERROR(zelda3::LoadDungeonMapTile16(
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "absl/status/status.h"
|
||||
#include "absl/strings/str_cat.h"
|
||||
#include "absl/strings/str_format.h"
|
||||
#include "app/core/performance_monitor.h"
|
||||
#include "app/core/platform/file_dialog.h"
|
||||
#include "app/core/window.h"
|
||||
#include "app/gfx/bitmap.h"
|
||||
@@ -91,7 +92,10 @@ void MessageEditor::Initialize() {
|
||||
DrawMessagePreview();
|
||||
}
|
||||
|
||||
absl::Status MessageEditor::Load() { return absl::OkStatus(); }
|
||||
absl::Status MessageEditor::Load() {
|
||||
core::ScopedTimer timer("MessageEditor::Load");
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
absl::Status MessageEditor::Update() {
|
||||
if (BeginTable("##MessageEditor", 4, kMessageTableFlags)) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "music_editor.h"
|
||||
|
||||
#include "absl/strings/str_format.h"
|
||||
#include "app/core/performance_monitor.h"
|
||||
#include "app/editor/code/assembly_editor.h"
|
||||
#include "app/gui/icons.h"
|
||||
#include "app/gui/input.h"
|
||||
@@ -12,6 +13,7 @@ namespace editor {
|
||||
void MusicEditor::Initialize() {}
|
||||
|
||||
absl::Status MusicEditor::Load() {
|
||||
core::ScopedTimer timer("MusicEditor::Load");
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "sprite_editor.h"
|
||||
|
||||
#include "app/core/performance_monitor.h"
|
||||
#include "app/core/platform/file_dialog.h"
|
||||
#include "app/editor/sprite/zsprite.h"
|
||||
#include "app/gfx/arena.h"
|
||||
@@ -24,7 +25,10 @@ using ImGui::Text;
|
||||
|
||||
void SpriteEditor::Initialize() {}
|
||||
|
||||
absl::Status SpriteEditor::Load() { return absl::OkStatus(); }
|
||||
absl::Status SpriteEditor::Load() {
|
||||
core::ScopedTimer timer("SpriteEditor::Load");
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
absl::Status SpriteEditor::Update() {
|
||||
if (rom()->is_loaded() && !sheets_loaded_) {
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "absl/status/status.h"
|
||||
#include "app/core/features.h"
|
||||
#include "app/core/performance_monitor.h"
|
||||
#include "app/gui/style.h"
|
||||
#include "imgui/imgui.h"
|
||||
|
||||
@@ -23,7 +24,10 @@ using ImGui::TableSetupColumn;
|
||||
|
||||
void SettingsEditor::Initialize() {}
|
||||
|
||||
absl::Status SettingsEditor::Load() { return absl::OkStatus(); }
|
||||
absl::Status SettingsEditor::Load() {
|
||||
core::ScopedTimer timer("SettingsEditor::Load");
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
absl::Status SettingsEditor::Update() {
|
||||
if (BeginTabBar("Settings", ImGuiTabBarFlags_None)) {
|
||||
|
||||
@@ -869,7 +869,6 @@ void Sprite::DrawSpriteTile(int x, int y, int srcx, int srcy, int pal,
|
||||
bool mirror_x, bool mirror_y, int sizex,
|
||||
int sizey) {
|
||||
if (current_gfx_.empty()) {
|
||||
std::cout << "No gfx loaded" << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user