@esengine/ecs-framework 2.1.3 → 2.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/README.md +385 -0
  2. package/{bin/index.d.ts → index.d.ts} +9 -6
  3. package/index.js +7 -0
  4. package/index.js.map +7 -0
  5. package/package.json +20 -48
  6. package/bin/Core.d.ts +0 -198
  7. package/bin/Core.d.ts.map +0 -1
  8. package/bin/Core.js +0 -247
  9. package/bin/Core.js.map +0 -1
  10. package/bin/ECS/Component.d.ts +0 -119
  11. package/bin/ECS/Component.d.ts.map +0 -1
  12. package/bin/ECS/Component.js +0 -129
  13. package/bin/ECS/Component.js.map +0 -1
  14. package/bin/ECS/Components/IUpdatable.d.ts +0 -22
  15. package/bin/ECS/Components/IUpdatable.d.ts.map +0 -1
  16. package/bin/ECS/Components/IUpdatable.js +0 -22
  17. package/bin/ECS/Components/IUpdatable.js.map +0 -1
  18. package/bin/ECS/Components/SceneComponent.d.ts +0 -40
  19. package/bin/ECS/Components/SceneComponent.d.ts.map +0 -1
  20. package/bin/ECS/Components/SceneComponent.js +0 -61
  21. package/bin/ECS/Components/SceneComponent.js.map +0 -1
  22. package/bin/ECS/Core/BitMaskOptimizer.d.ts +0 -75
  23. package/bin/ECS/Core/BitMaskOptimizer.d.ts.map +0 -1
  24. package/bin/ECS/Core/BitMaskOptimizer.js +0 -161
  25. package/bin/ECS/Core/BitMaskOptimizer.js.map +0 -1
  26. package/bin/ECS/Core/ComponentPool.d.ts +0 -72
  27. package/bin/ECS/Core/ComponentPool.d.ts.map +0 -1
  28. package/bin/ECS/Core/ComponentPool.js +0 -123
  29. package/bin/ECS/Core/ComponentPool.js.map +0 -1
  30. package/bin/ECS/Core/ComponentStorage.d.ts +0 -182
  31. package/bin/ECS/Core/ComponentStorage.d.ts.map +0 -1
  32. package/bin/ECS/Core/ComponentStorage.js +0 -346
  33. package/bin/ECS/Core/ComponentStorage.js.map +0 -1
  34. package/bin/ECS/Core/EventSystem.d.ts +0 -236
  35. package/bin/ECS/Core/EventSystem.d.ts.map +0 -1
  36. package/bin/ECS/Core/EventSystem.js +0 -476
  37. package/bin/ECS/Core/EventSystem.js.map +0 -1
  38. package/bin/ECS/Core/FluentAPI.d.ts +0 -371
  39. package/bin/ECS/Core/FluentAPI.d.ts.map +0 -1
  40. package/bin/ECS/Core/FluentAPI.js +0 -543
  41. package/bin/ECS/Core/FluentAPI.js.map +0 -1
  42. package/bin/ECS/Core/IndexUpdateBatcher.d.ts +0 -100
  43. package/bin/ECS/Core/IndexUpdateBatcher.d.ts.map +0 -1
  44. package/bin/ECS/Core/IndexUpdateBatcher.js +0 -219
  45. package/bin/ECS/Core/IndexUpdateBatcher.js.map +0 -1
  46. package/bin/ECS/Core/QuerySystem.d.ts +0 -422
  47. package/bin/ECS/Core/QuerySystem.d.ts.map +0 -1
  48. package/bin/ECS/Core/QuerySystem.js +0 -937
  49. package/bin/ECS/Core/QuerySystem.js.map +0 -1
  50. package/bin/ECS/CoreEvents.d.ts +0 -19
  51. package/bin/ECS/CoreEvents.d.ts.map +0 -1
  52. package/bin/ECS/CoreEvents.js +0 -20
  53. package/bin/ECS/CoreEvents.js.map +0 -1
  54. package/bin/ECS/Entity.d.ts +0 -538
  55. package/bin/ECS/Entity.d.ts.map +0 -1
  56. package/bin/ECS/Entity.js +0 -1030
  57. package/bin/ECS/Entity.js.map +0 -1
  58. package/bin/ECS/Scene.d.ts +0 -226
  59. package/bin/ECS/Scene.d.ts.map +0 -1
  60. package/bin/ECS/Scene.js +0 -308
  61. package/bin/ECS/Scene.js.map +0 -1
  62. package/bin/ECS/Systems/EntitySystem.d.ts +0 -185
  63. package/bin/ECS/Systems/EntitySystem.d.ts.map +0 -1
  64. package/bin/ECS/Systems/EntitySystem.js +0 -278
  65. package/bin/ECS/Systems/EntitySystem.js.map +0 -1
  66. package/bin/ECS/Systems/IntervalSystem.d.ts +0 -33
  67. package/bin/ECS/Systems/IntervalSystem.d.ts.map +0 -1
  68. package/bin/ECS/Systems/IntervalSystem.js +0 -50
  69. package/bin/ECS/Systems/IntervalSystem.js.map +0 -1
  70. package/bin/ECS/Systems/PassiveSystem.d.ts +0 -20
  71. package/bin/ECS/Systems/PassiveSystem.d.ts.map +0 -1
  72. package/bin/ECS/Systems/PassiveSystem.js +0 -21
  73. package/bin/ECS/Systems/PassiveSystem.js.map +0 -1
  74. package/bin/ECS/Systems/ProcessingSystem.d.ts +0 -24
  75. package/bin/ECS/Systems/ProcessingSystem.d.ts.map +0 -1
  76. package/bin/ECS/Systems/ProcessingSystem.js +0 -22
  77. package/bin/ECS/Systems/ProcessingSystem.js.map +0 -1
  78. package/bin/ECS/Systems/index.d.ts +0 -5
  79. package/bin/ECS/Systems/index.d.ts.map +0 -1
  80. package/bin/ECS/Systems/index.js +0 -6
  81. package/bin/ECS/Systems/index.js.map +0 -1
  82. package/bin/ECS/Utils/Bits.d.ts +0 -74
  83. package/bin/ECS/Utils/Bits.d.ts.map +0 -1
  84. package/bin/ECS/Utils/Bits.js +0 -142
  85. package/bin/ECS/Utils/Bits.js.map +0 -1
  86. package/bin/ECS/Utils/ComponentTypeManager.d.ts +0 -50
  87. package/bin/ECS/Utils/ComponentTypeManager.d.ts.map +0 -1
  88. package/bin/ECS/Utils/ComponentTypeManager.js +0 -84
  89. package/bin/ECS/Utils/ComponentTypeManager.js.map +0 -1
  90. package/bin/ECS/Utils/EntityList.d.ts +0 -108
  91. package/bin/ECS/Utils/EntityList.d.ts.map +0 -1
  92. package/bin/ECS/Utils/EntityList.js +0 -249
  93. package/bin/ECS/Utils/EntityList.js.map +0 -1
  94. package/bin/ECS/Utils/EntityProcessorList.d.ts +0 -53
  95. package/bin/ECS/Utils/EntityProcessorList.d.ts.map +0 -1
  96. package/bin/ECS/Utils/EntityProcessorList.js +0 -96
  97. package/bin/ECS/Utils/EntityProcessorList.js.map +0 -1
  98. package/bin/ECS/Utils/IdentifierPool.d.ts +0 -18
  99. package/bin/ECS/Utils/IdentifierPool.d.ts.map +0 -1
  100. package/bin/ECS/Utils/IdentifierPool.js +0 -27
  101. package/bin/ECS/Utils/IdentifierPool.js.map +0 -1
  102. package/bin/ECS/Utils/Matcher.d.ts +0 -63
  103. package/bin/ECS/Utils/Matcher.d.ts.map +0 -1
  104. package/bin/ECS/Utils/Matcher.js +0 -140
  105. package/bin/ECS/Utils/Matcher.js.map +0 -1
  106. package/bin/ECS/Utils/index.d.ts +0 -7
  107. package/bin/ECS/Utils/index.d.ts.map +0 -1
  108. package/bin/ECS/Utils/index.js +0 -8
  109. package/bin/ECS/Utils/index.js.map +0 -1
  110. package/bin/ECS/index.d.ts +0 -7
  111. package/bin/ECS/index.d.ts.map +0 -1
  112. package/bin/ECS/index.js +0 -29
  113. package/bin/ECS/index.js.map +0 -1
  114. package/bin/Testing/Performance/benchmark.d.ts +0 -6
  115. package/bin/Testing/Performance/benchmark.d.ts.map +0 -1
  116. package/bin/Testing/Performance/benchmark.js +0 -639
  117. package/bin/Testing/Performance/benchmark.js.map +0 -1
  118. package/bin/Testing/Performance/component-performance.d.ts +0 -2
  119. package/bin/Testing/Performance/component-performance.d.ts.map +0 -1
  120. package/bin/Testing/Performance/component-performance.js +0 -43
  121. package/bin/Testing/Performance/component-performance.js.map +0 -1
  122. package/bin/Testing/Unit/bitmask-optimizer.test.d.ts +0 -2
  123. package/bin/Testing/Unit/bitmask-optimizer.test.d.ts.map +0 -1
  124. package/bin/Testing/Unit/bitmask-optimizer.test.js +0 -164
  125. package/bin/Testing/Unit/bitmask-optimizer.test.js.map +0 -1
  126. package/bin/Testing/Unit/component-pool.test.d.ts +0 -5
  127. package/bin/Testing/Unit/component-pool.test.d.ts.map +0 -1
  128. package/bin/Testing/Unit/component-pool.test.js +0 -149
  129. package/bin/Testing/Unit/component-pool.test.js.map +0 -1
  130. package/bin/Testing/test-runner.d.ts +0 -51
  131. package/bin/Testing/test-runner.d.ts.map +0 -1
  132. package/bin/Testing/test-runner.js +0 -159
  133. package/bin/Testing/test-runner.js.map +0 -1
  134. package/bin/Types/index.d.ts +0 -22
  135. package/bin/Types/index.d.ts.map +0 -1
  136. package/bin/Types/index.js +0 -20
  137. package/bin/Types/index.js.map +0 -1
  138. package/bin/Utils/Emitter.d.ts +0 -43
  139. package/bin/Utils/Emitter.d.ts.map +0 -1
  140. package/bin/Utils/Emitter.js +0 -69
  141. package/bin/Utils/Emitter.js.map +0 -1
  142. package/bin/Utils/Extensions/NumberExtension.d.ts +0 -13
  143. package/bin/Utils/Extensions/NumberExtension.d.ts.map +0 -1
  144. package/bin/Utils/Extensions/NumberExtension.js +0 -17
  145. package/bin/Utils/Extensions/NumberExtension.js.map +0 -1
  146. package/bin/Utils/Extensions/TypeUtils.d.ts +0 -13
  147. package/bin/Utils/Extensions/TypeUtils.d.ts.map +0 -1
  148. package/bin/Utils/Extensions/TypeUtils.js +0 -15
  149. package/bin/Utils/Extensions/TypeUtils.js.map +0 -1
  150. package/bin/Utils/Extensions/index.d.ts +0 -3
  151. package/bin/Utils/Extensions/index.d.ts.map +0 -1
  152. package/bin/Utils/Extensions/index.js +0 -4
  153. package/bin/Utils/Extensions/index.js.map +0 -1
  154. package/bin/Utils/GlobalManager.d.ts +0 -32
  155. package/bin/Utils/GlobalManager.d.ts.map +0 -1
  156. package/bin/Utils/GlobalManager.js +0 -53
  157. package/bin/Utils/GlobalManager.js.map +0 -1
  158. package/bin/Utils/PerformanceMonitor.d.ts +0 -211
  159. package/bin/Utils/PerformanceMonitor.d.ts.map +0 -1
  160. package/bin/Utils/PerformanceMonitor.js +0 -270
  161. package/bin/Utils/PerformanceMonitor.js.map +0 -1
  162. package/bin/Utils/Pool.d.ts +0 -239
  163. package/bin/Utils/Pool.d.ts.map +0 -1
  164. package/bin/Utils/Pool.js +0 -449
  165. package/bin/Utils/Pool.js.map +0 -1
  166. package/bin/Utils/Time.d.ts +0 -55
  167. package/bin/Utils/Time.d.ts.map +0 -1
  168. package/bin/Utils/Time.js +0 -78
  169. package/bin/Utils/Time.js.map +0 -1
  170. package/bin/Utils/Timers/ITimer.d.ts +0 -16
  171. package/bin/Utils/Timers/ITimer.d.ts.map +0 -1
  172. package/bin/Utils/Timers/ITimer.js +0 -2
  173. package/bin/Utils/Timers/ITimer.js.map +0 -1
  174. package/bin/Utils/Timers/Timer.d.ts +0 -22
  175. package/bin/Utils/Timers/Timer.d.ts.map +0 -1
  176. package/bin/Utils/Timers/Timer.js +0 -46
  177. package/bin/Utils/Timers/Timer.js.map +0 -1
  178. package/bin/Utils/Timers/TimerManager.d.ts +0 -19
  179. package/bin/Utils/Timers/TimerManager.d.ts.map +0 -1
  180. package/bin/Utils/Timers/TimerManager.js +0 -33
  181. package/bin/Utils/Timers/TimerManager.js.map +0 -1
  182. package/bin/Utils/WasmCore.d.ts +0 -234
  183. package/bin/Utils/WasmCore.d.ts.map +0 -1
  184. package/bin/Utils/WasmCore.js +0 -596
  185. package/bin/Utils/WasmCore.js.map +0 -1
  186. package/bin/Utils/index.d.ts +0 -16
  187. package/bin/Utils/index.d.ts.map +0 -1
  188. package/bin/Utils/index.js +0 -37
  189. package/bin/Utils/index.js.map +0 -1
  190. package/bin/index.cjs +0 -51
  191. package/bin/index.d.ts.map +0 -1
  192. package/bin/index.esm.d.ts +0 -45
  193. package/bin/index.esm.d.ts.map +0 -1
  194. package/bin/index.esm.js +0 -46
  195. package/bin/index.esm.js.map +0 -1
  196. package/bin/index.js.map +0 -1
@@ -1,211 +0,0 @@
1
- /**
2
- * 性能监控数据
3
- */
4
- export interface PerformanceData {
5
- /** 系统名称 */
6
- name: string;
7
- /** 执行时间(毫秒) */
8
- executionTime: number;
9
- /** 处理的实体数量 */
10
- entityCount: number;
11
- /** 平均每个实体的处理时间 */
12
- averageTimePerEntity: number;
13
- /** 最后更新时间戳 */
14
- lastUpdateTime: number;
15
- /** 内存使用量(字节) */
16
- memoryUsage?: number;
17
- /** CPU使用率(百分比) */
18
- cpuUsage?: number;
19
- }
20
- /**
21
- * 性能统计信息
22
- */
23
- export interface PerformanceStats {
24
- /** 总执行时间 */
25
- totalTime: number;
26
- /** 平均执行时间 */
27
- averageTime: number;
28
- /** 最小执行时间 */
29
- minTime: number;
30
- /** 最大执行时间 */
31
- maxTime: number;
32
- /** 执行次数 */
33
- executionCount: number;
34
- /** 最近的执行时间列表 */
35
- recentTimes: number[];
36
- /** 标准差 */
37
- standardDeviation: number;
38
- /** 95百分位数 */
39
- percentile95: number;
40
- /** 99百分位数 */
41
- percentile99: number;
42
- }
43
- /**
44
- * 性能警告类型
45
- */
46
- export declare enum PerformanceWarningType {
47
- HIGH_EXECUTION_TIME = "high_execution_time",
48
- HIGH_MEMORY_USAGE = "high_memory_usage",
49
- HIGH_CPU_USAGE = "high_cpu_usage",
50
- FREQUENT_GC = "frequent_gc",
51
- LOW_FPS = "low_fps",
52
- HIGH_ENTITY_COUNT = "high_entity_count"
53
- }
54
- /**
55
- * 性能警告
56
- */
57
- export interface PerformanceWarning {
58
- type: PerformanceWarningType;
59
- systemName: string;
60
- message: string;
61
- severity: 'low' | 'medium' | 'high' | 'critical';
62
- timestamp: number;
63
- value: number;
64
- threshold: number;
65
- suggestion?: string;
66
- }
67
- /**
68
- * 性能阈值配置
69
- */
70
- export interface PerformanceThresholds {
71
- /** 执行时间阈值(毫秒) */
72
- executionTime: {
73
- warning: number;
74
- critical: number;
75
- };
76
- /** 内存使用阈值(MB) */
77
- memoryUsage: {
78
- warning: number;
79
- critical: number;
80
- };
81
- /** CPU使用率阈值(百分比) */
82
- cpuUsage: {
83
- warning: number;
84
- critical: number;
85
- };
86
- /** FPS阈值 */
87
- fps: {
88
- warning: number;
89
- critical: number;
90
- };
91
- /** 实体数量阈值 */
92
- entityCount: {
93
- warning: number;
94
- critical: number;
95
- };
96
- }
97
- /**
98
- * 高性能监控器
99
- * 用于监控ECS系统的性能表现,提供详细的分析和优化建议
100
- */
101
- export declare class PerformanceMonitor {
102
- private static _instance;
103
- private _systemData;
104
- private _systemStats;
105
- private _warnings;
106
- private _isEnabled;
107
- private _maxRecentSamples;
108
- private _maxWarnings;
109
- private _thresholds;
110
- private _fpsHistory;
111
- private _lastFrameTime;
112
- private _frameCount;
113
- private _fpsUpdateInterval;
114
- private _lastFpsUpdate;
115
- private _currentFps;
116
- private _memoryCheckInterval;
117
- private _lastMemoryCheck;
118
- private _memoryHistory;
119
- private _gcCount;
120
- private _lastGcCheck;
121
- private _gcCheckInterval;
122
- /**
123
- * 获取单例实例
124
- */
125
- static get instance(): PerformanceMonitor;
126
- private constructor();
127
- /**
128
- * 启用性能监控
129
- */
130
- enable(): void;
131
- /**
132
- * 禁用性能监控
133
- */
134
- disable(): void;
135
- /**
136
- * 检查是否启用了性能监控
137
- */
138
- get isEnabled(): boolean;
139
- /**
140
- * 开始监控系统性能
141
- * @param systemName 系统名称
142
- * @returns 开始时间戳
143
- */
144
- startMonitoring(systemName: string): number;
145
- /**
146
- * 结束监控并记录性能数据
147
- * @param systemName 系统名称
148
- * @param startTime 开始时间戳
149
- * @param entityCount 处理的实体数量
150
- */
151
- endMonitoring(systemName: string, startTime: number, entityCount?: number): void;
152
- /**
153
- * 更新系统统计信息
154
- * @param systemName 系统名称
155
- * @param executionTime 执行时间
156
- */
157
- private updateStats;
158
- /**
159
- * 计算高级统计信息
160
- * @param stats 统计信息对象
161
- */
162
- private calculateAdvancedStats;
163
- /**
164
- * 获取系统的当前性能数据
165
- * @param systemName 系统名称
166
- * @returns 性能数据或undefined
167
- */
168
- getSystemData(systemName: string): PerformanceData | undefined;
169
- /**
170
- * 获取系统的统计信息
171
- * @param systemName 系统名称
172
- * @returns 统计信息或undefined
173
- */
174
- getSystemStats(systemName: string): PerformanceStats | undefined;
175
- /**
176
- * 获取所有系统的性能数据
177
- * @returns 所有系统的性能数据
178
- */
179
- getAllSystemData(): Map<string, PerformanceData>;
180
- /**
181
- * 获取所有系统的统计信息
182
- * @returns 所有系统的统计信息
183
- */
184
- getAllSystemStats(): Map<string, PerformanceStats>;
185
- /**
186
- * 获取性能报告
187
- * @returns 格式化的性能报告字符串
188
- */
189
- getPerformanceReport(): string;
190
- /**
191
- * 重置所有性能数据
192
- */
193
- reset(): void;
194
- /**
195
- * 重置指定系统的性能数据
196
- * @param systemName 系统名称
197
- */
198
- resetSystem(systemName: string): void;
199
- /**
200
- * 获取性能警告
201
- * @param thresholdMs 警告阈值(毫秒)
202
- * @returns 超过阈值的系统列表
203
- */
204
- getPerformanceWarnings(thresholdMs?: number): string[];
205
- /**
206
- * 设置最大保留样本数
207
- * @param maxSamples 最大样本数
208
- */
209
- setMaxRecentSamples(maxSamples: number): void;
210
- }
211
- //# sourceMappingURL=PerformanceMonitor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PerformanceMonitor.d.ts","sourceRoot":"","sources":["../../src/Utils/PerformanceMonitor.ts"],"names":[],"mappings":"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"}
@@ -1,270 +0,0 @@
1
- /**
2
- * 性能警告类型
3
- */
4
- export var PerformanceWarningType;
5
- (function (PerformanceWarningType) {
6
- PerformanceWarningType["HIGH_EXECUTION_TIME"] = "high_execution_time";
7
- PerformanceWarningType["HIGH_MEMORY_USAGE"] = "high_memory_usage";
8
- PerformanceWarningType["HIGH_CPU_USAGE"] = "high_cpu_usage";
9
- PerformanceWarningType["FREQUENT_GC"] = "frequent_gc";
10
- PerformanceWarningType["LOW_FPS"] = "low_fps";
11
- PerformanceWarningType["HIGH_ENTITY_COUNT"] = "high_entity_count";
12
- })(PerformanceWarningType || (PerformanceWarningType = {}));
13
- /**
14
- * 高性能监控器
15
- * 用于监控ECS系统的性能表现,提供详细的分析和优化建议
16
- */
17
- export class PerformanceMonitor {
18
- /**
19
- * 获取单例实例
20
- */
21
- static get instance() {
22
- if (!PerformanceMonitor._instance) {
23
- PerformanceMonitor._instance = new PerformanceMonitor();
24
- }
25
- return PerformanceMonitor._instance;
26
- }
27
- constructor() {
28
- this._systemData = new Map();
29
- this._systemStats = new Map();
30
- this._warnings = [];
31
- this._isEnabled = false;
32
- this._maxRecentSamples = 60; // 保留最近60帧的数据
33
- this._maxWarnings = 100; // 最大警告数量
34
- // 性能阈值配置
35
- this._thresholds = {
36
- executionTime: { warning: 16.67, critical: 33.33 }, // 60fps和30fps对应的帧时间
37
- memoryUsage: { warning: 100, critical: 200 }, // MB
38
- cpuUsage: { warning: 70, critical: 90 }, // 百分比
39
- fps: { warning: 45, critical: 30 },
40
- entityCount: { warning: 1000, critical: 5000 }
41
- };
42
- // FPS监控
43
- this._fpsHistory = [];
44
- this._lastFrameTime = 0;
45
- this._frameCount = 0;
46
- this._fpsUpdateInterval = 1000; // 1秒更新一次FPS
47
- this._lastFpsUpdate = 0;
48
- this._currentFps = 60;
49
- // 内存监控
50
- this._memoryCheckInterval = 5000; // 5秒检查一次内存
51
- this._lastMemoryCheck = 0;
52
- this._memoryHistory = [];
53
- // GC监控
54
- this._gcCount = 0;
55
- this._lastGcCheck = 0;
56
- this._gcCheckInterval = 1000;
57
- }
58
- /**
59
- * 启用性能监控
60
- */
61
- enable() {
62
- this._isEnabled = true;
63
- }
64
- /**
65
- * 禁用性能监控
66
- */
67
- disable() {
68
- this._isEnabled = false;
69
- }
70
- /**
71
- * 检查是否启用了性能监控
72
- */
73
- get isEnabled() {
74
- return this._isEnabled;
75
- }
76
- /**
77
- * 开始监控系统性能
78
- * @param systemName 系统名称
79
- * @returns 开始时间戳
80
- */
81
- startMonitoring(systemName) {
82
- if (!this._isEnabled) {
83
- return 0;
84
- }
85
- return performance.now();
86
- }
87
- /**
88
- * 结束监控并记录性能数据
89
- * @param systemName 系统名称
90
- * @param startTime 开始时间戳
91
- * @param entityCount 处理的实体数量
92
- */
93
- endMonitoring(systemName, startTime, entityCount = 0) {
94
- if (!this._isEnabled || startTime === 0) {
95
- return;
96
- }
97
- const endTime = performance.now();
98
- const executionTime = endTime - startTime;
99
- const averageTimePerEntity = entityCount > 0 ? executionTime / entityCount : 0;
100
- // 更新当前性能数据
101
- const data = {
102
- name: systemName,
103
- executionTime,
104
- entityCount,
105
- averageTimePerEntity,
106
- lastUpdateTime: endTime
107
- };
108
- this._systemData.set(systemName, data);
109
- // 更新统计信息
110
- this.updateStats(systemName, executionTime);
111
- }
112
- /**
113
- * 更新系统统计信息
114
- * @param systemName 系统名称
115
- * @param executionTime 执行时间
116
- */
117
- updateStats(systemName, executionTime) {
118
- let stats = this._systemStats.get(systemName);
119
- if (!stats) {
120
- stats = {
121
- totalTime: 0,
122
- averageTime: 0,
123
- minTime: Number.MAX_VALUE,
124
- maxTime: 0,
125
- executionCount: 0,
126
- recentTimes: [],
127
- standardDeviation: 0,
128
- percentile95: 0,
129
- percentile99: 0
130
- };
131
- this._systemStats.set(systemName, stats);
132
- }
133
- // 更新基本统计
134
- stats.totalTime += executionTime;
135
- stats.executionCount++;
136
- stats.averageTime = stats.totalTime / stats.executionCount;
137
- stats.minTime = Math.min(stats.minTime, executionTime);
138
- stats.maxTime = Math.max(stats.maxTime, executionTime);
139
- // 更新最近时间列表
140
- stats.recentTimes.push(executionTime);
141
- if (stats.recentTimes.length > this._maxRecentSamples) {
142
- stats.recentTimes.shift();
143
- }
144
- // 计算高级统计信息
145
- this.calculateAdvancedStats(stats);
146
- }
147
- /**
148
- * 计算高级统计信息
149
- * @param stats 统计信息对象
150
- */
151
- calculateAdvancedStats(stats) {
152
- if (stats.recentTimes.length === 0)
153
- return;
154
- // 计算标准差
155
- const mean = stats.recentTimes.reduce((a, b) => a + b, 0) / stats.recentTimes.length;
156
- const variance = stats.recentTimes.reduce((acc, time) => acc + Math.pow(time - mean, 2), 0) / stats.recentTimes.length;
157
- stats.standardDeviation = Math.sqrt(variance);
158
- // 计算百分位数
159
- const sortedTimes = [...stats.recentTimes].sort((a, b) => a - b);
160
- const len = sortedTimes.length;
161
- stats.percentile95 = sortedTimes[Math.floor(len * 0.95)] || 0;
162
- stats.percentile99 = sortedTimes[Math.floor(len * 0.99)] || 0;
163
- }
164
- /**
165
- * 获取系统的当前性能数据
166
- * @param systemName 系统名称
167
- * @returns 性能数据或undefined
168
- */
169
- getSystemData(systemName) {
170
- return this._systemData.get(systemName);
171
- }
172
- /**
173
- * 获取系统的统计信息
174
- * @param systemName 系统名称
175
- * @returns 统计信息或undefined
176
- */
177
- getSystemStats(systemName) {
178
- return this._systemStats.get(systemName);
179
- }
180
- /**
181
- * 获取所有系统的性能数据
182
- * @returns 所有系统的性能数据
183
- */
184
- getAllSystemData() {
185
- return new Map(this._systemData);
186
- }
187
- /**
188
- * 获取所有系统的统计信息
189
- * @returns 所有系统的统计信息
190
- */
191
- getAllSystemStats() {
192
- return new Map(this._systemStats);
193
- }
194
- /**
195
- * 获取性能报告
196
- * @returns 格式化的性能报告字符串
197
- */
198
- getPerformanceReport() {
199
- if (!this._isEnabled) {
200
- return "Performance monitoring is disabled.";
201
- }
202
- const lines = [];
203
- lines.push("=== ECS Performance Report ===");
204
- lines.push("");
205
- // 按平均执行时间排序
206
- const sortedSystems = Array.from(this._systemStats.entries())
207
- .sort((a, b) => b[1].averageTime - a[1].averageTime);
208
- for (const [systemName, stats] of sortedSystems) {
209
- const data = this._systemData.get(systemName);
210
- lines.push(`System: ${systemName}`);
211
- lines.push(` Current: ${data?.executionTime.toFixed(2)}ms (${data?.entityCount} entities)`);
212
- lines.push(` Average: ${stats.averageTime.toFixed(2)}ms`);
213
- lines.push(` Min/Max: ${stats.minTime.toFixed(2)}ms / ${stats.maxTime.toFixed(2)}ms`);
214
- lines.push(` Total: ${stats.totalTime.toFixed(2)}ms (${stats.executionCount} calls)`);
215
- if (data?.averageTimePerEntity && data.averageTimePerEntity > 0) {
216
- lines.push(` Per Entity: ${data.averageTimePerEntity.toFixed(4)}ms`);
217
- }
218
- lines.push("");
219
- }
220
- // 总体统计
221
- const totalCurrentTime = Array.from(this._systemData.values())
222
- .reduce((sum, data) => sum + data.executionTime, 0);
223
- lines.push(`Total Frame Time: ${totalCurrentTime.toFixed(2)}ms`);
224
- lines.push(`Systems Count: ${this._systemData.size}`);
225
- return lines.join('\n');
226
- }
227
- /**
228
- * 重置所有性能数据
229
- */
230
- reset() {
231
- this._systemData.clear();
232
- this._systemStats.clear();
233
- }
234
- /**
235
- * 重置指定系统的性能数据
236
- * @param systemName 系统名称
237
- */
238
- resetSystem(systemName) {
239
- this._systemData.delete(systemName);
240
- this._systemStats.delete(systemName);
241
- }
242
- /**
243
- * 获取性能警告
244
- * @param thresholdMs 警告阈值(毫秒)
245
- * @returns 超过阈值的系统列表
246
- */
247
- getPerformanceWarnings(thresholdMs = 16.67) {
248
- const warnings = [];
249
- for (const [systemName, data] of this._systemData.entries()) {
250
- if (data.executionTime > thresholdMs) {
251
- warnings.push(`${systemName}: ${data.executionTime.toFixed(2)}ms (>${thresholdMs}ms)`);
252
- }
253
- }
254
- return warnings;
255
- }
256
- /**
257
- * 设置最大保留样本数
258
- * @param maxSamples 最大样本数
259
- */
260
- setMaxRecentSamples(maxSamples) {
261
- this._maxRecentSamples = maxSamples;
262
- // 裁剪现有数据
263
- for (const stats of this._systemStats.values()) {
264
- while (stats.recentTimes.length > maxSamples) {
265
- stats.recentTimes.shift();
266
- }
267
- }
268
- }
269
- }
270
- //# sourceMappingURL=PerformanceMonitor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PerformanceMonitor.js","sourceRoot":"","sources":["../../src/Utils/PerformanceMonitor.ts"],"names":[],"mappings":"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"}