From 987051acd4c753e7418b92f9927b399e5b403147 Mon Sep 17 00:00:00 2001 From: YHH <359807859@qq.com> Date: Sun, 30 Nov 2025 00:53:01 +0800 Subject: [PATCH] Feature/advanced profiler (#249) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(profiler): 实现高级性能分析器 * test(core): 添加 ProfilerSDK 和 AdvancedProfilerCollector 测试覆盖 * test(core): 添加 ProfilerSDK 和 AdvancedProfilerCollector 测试覆盖 * test(core): 添加 ProfilerSDK 和 AdvancedProfilerCollector 测试覆盖 --- packages/core/src/Core.ts | 9 +++++++++ packages/editor-app/src/components/ProfilerPanel.tsx | 11 +++-------- packages/editor-app/src/components/ProfilerWindow.tsx | 11 +++-------- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/packages/core/src/Core.ts b/packages/core/src/Core.ts index 86968eb4..b0ae2e04 100644 --- a/packages/core/src/Core.ts +++ b/packages/core/src/Core.ts @@ -512,6 +512,15 @@ export class Core { return this._instance?._config.debugConfig?.enabled || false; } + /** + * 获取性能监视器实例 + * + * @returns 性能监视器,如果Core未初始化则返回null + */ + public static get performanceMonitor(): PerformanceMonitor | null { + return this._instance?._performanceMonitor || null; + } + /** * 安装插件 * diff --git a/packages/editor-app/src/components/ProfilerPanel.tsx b/packages/editor-app/src/components/ProfilerPanel.tsx index 2dc4b740..4d4a0958 100644 --- a/packages/editor-app/src/components/ProfilerPanel.tsx +++ b/packages/editor-app/src/components/ProfilerPanel.tsx @@ -27,13 +27,11 @@ export function ProfilerPanel() { return; } - const coreInstance = Core.Instance; - if (!coreInstance || !coreInstance._performanceMonitor?.isEnabled) { + const performanceMonitor = Core.performanceMonitor; + if (!performanceMonitor?.isEnabled) { animationRef.current = requestAnimationFrame(updateProfilerData); return; } - - const performanceMonitor = coreInstance._performanceMonitor; const systemDataMap = performanceMonitor.getAllSystemData(); const systemStatsMap = performanceMonitor.getAllSystemStats(); @@ -91,10 +89,7 @@ export function ProfilerPanel() { }, [isPaused, sortBy]); const handleReset = () => { - const coreInstance = Core.Instance; - if (coreInstance && coreInstance._performanceMonitor) { - coreInstance._performanceMonitor.reset(); - } + Core.performanceMonitor?.reset(); }; const fps = totalFrameTime > 0 ? Math.round(1000 / totalFrameTime) : 0; diff --git a/packages/editor-app/src/components/ProfilerWindow.tsx b/packages/editor-app/src/components/ProfilerWindow.tsx index a0226ec5..74d3aa4f 100644 --- a/packages/editor-app/src/components/ProfilerWindow.tsx +++ b/packages/editor-app/src/components/ProfilerWindow.tsx @@ -156,13 +156,11 @@ export function ProfilerWindow({ onClose }: ProfilerWindowProps) { return; } - const coreInstance = Core.Instance; - if (!coreInstance || !coreInstance._performanceMonitor?.isEnabled) { + const performanceMonitor = Core.performanceMonitor; + if (!performanceMonitor?.isEnabled) { animationRef.current = requestAnimationFrame(updateProfilerData); return; } - - const performanceMonitor = coreInstance._performanceMonitor; const systemDataMap = performanceMonitor.getAllSystemData(); const systemStatsMap = performanceMonitor.getAllSystemStats(); @@ -219,10 +217,7 @@ export function ProfilerWindow({ onClose }: ProfilerWindowProps) { const handleReset = () => { if (dataSource === 'local') { - const coreInstance = Core.Instance; - if (coreInstance && coreInstance._performanceMonitor) { - coreInstance._performanceMonitor.reset(); - } + Core.performanceMonitor?.reset(); } else { // Reset remote data setSystems([]);