@esengine/ecs-framework 2.0.5 → 2.0.7

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 (116) hide show
  1. package/bin/Core.js +23 -21
  2. package/bin/Core.js.map +1 -1
  3. package/bin/ECS/Component.js +5 -1
  4. package/bin/ECS/Component.js.map +1 -1
  5. package/bin/ECS/Components/IUpdatable.js +7 -2
  6. package/bin/ECS/Components/IUpdatable.js.map +1 -1
  7. package/bin/ECS/Components/SceneComponent.js +5 -1
  8. package/bin/ECS/Components/SceneComponent.js.map +1 -1
  9. package/bin/ECS/Core/BitMaskOptimizer.d.ts +75 -0
  10. package/bin/ECS/Core/BitMaskOptimizer.d.ts.map +1 -0
  11. package/bin/ECS/Core/BitMaskOptimizer.js +165 -0
  12. package/bin/ECS/Core/BitMaskOptimizer.js.map +1 -0
  13. package/bin/ECS/Core/ComponentPool.d.ts +72 -0
  14. package/bin/ECS/Core/ComponentPool.d.ts.map +1 -0
  15. package/bin/ECS/Core/ComponentPool.js +128 -0
  16. package/bin/ECS/Core/ComponentPool.js.map +1 -0
  17. package/bin/ECS/Core/ComponentStorage.js +9 -3
  18. package/bin/ECS/Core/ComponentStorage.js.map +1 -1
  19. package/bin/ECS/Core/EventSystem.js +13 -7
  20. package/bin/ECS/Core/EventSystem.js.map +1 -1
  21. package/bin/ECS/Core/FluentAPI.js +24 -17
  22. package/bin/ECS/Core/FluentAPI.js.map +1 -1
  23. package/bin/ECS/Core/IndexUpdateBatcher.d.ts +100 -0
  24. package/bin/ECS/Core/IndexUpdateBatcher.d.ts.map +1 -0
  25. package/bin/ECS/Core/IndexUpdateBatcher.js +223 -0
  26. package/bin/ECS/Core/IndexUpdateBatcher.js.map +1 -0
  27. package/bin/ECS/Core/QuerySystem.d.ts +292 -444
  28. package/bin/ECS/Core/QuerySystem.d.ts.map +1 -1
  29. package/bin/ECS/Core/QuerySystem.js +661 -1075
  30. package/bin/ECS/Core/QuerySystem.js.map +1 -1
  31. package/bin/ECS/CoreEvents.js +5 -2
  32. package/bin/ECS/CoreEvents.js.map +1 -1
  33. package/bin/ECS/Entity.js +18 -14
  34. package/bin/ECS/Entity.js.map +1 -1
  35. package/bin/ECS/Scene.d.ts +18 -2
  36. package/bin/ECS/Scene.d.ts.map +1 -1
  37. package/bin/ECS/Scene.js +72 -27
  38. package/bin/ECS/Scene.js.map +1 -1
  39. package/bin/ECS/Systems/EntitySystem.js +9 -5
  40. package/bin/ECS/Systems/EntitySystem.js.map +1 -1
  41. package/bin/ECS/Systems/IntervalSystem.js +8 -4
  42. package/bin/ECS/Systems/IntervalSystem.js.map +1 -1
  43. package/bin/ECS/Systems/PassiveSystem.js +6 -2
  44. package/bin/ECS/Systems/PassiveSystem.js.map +1 -1
  45. package/bin/ECS/Systems/ProcessingSystem.js +6 -2
  46. package/bin/ECS/Systems/ProcessingSystem.js.map +1 -1
  47. package/bin/ECS/Systems/index.js +11 -4
  48. package/bin/ECS/Systems/index.js.map +1 -1
  49. package/bin/ECS/Utils/Bits.js +5 -1
  50. package/bin/ECS/Utils/Bits.js.map +1 -1
  51. package/bin/ECS/Utils/ComponentTypeManager.js +8 -4
  52. package/bin/ECS/Utils/ComponentTypeManager.js.map +1 -1
  53. package/bin/ECS/Utils/EntityList.js +5 -1
  54. package/bin/ECS/Utils/EntityList.js.map +1 -1
  55. package/bin/ECS/Utils/EntityProcessorList.js +5 -1
  56. package/bin/ECS/Utils/EntityProcessorList.js.map +1 -1
  57. package/bin/ECS/Utils/IdentifierPool.js +5 -1
  58. package/bin/ECS/Utils/IdentifierPool.js.map +1 -1
  59. package/bin/ECS/Utils/Matcher.js +8 -4
  60. package/bin/ECS/Utils/Matcher.js.map +1 -1
  61. package/bin/ECS/Utils/index.js +15 -6
  62. package/bin/ECS/Utils/index.js.map +1 -1
  63. package/bin/ECS/index.js +27 -6
  64. package/bin/ECS/index.js.map +1 -1
  65. package/bin/Testing/Performance/benchmark.d.ts +6 -0
  66. package/bin/Testing/Performance/benchmark.d.ts.map +1 -0
  67. package/bin/Testing/Performance/benchmark.js +639 -0
  68. package/bin/Testing/Performance/benchmark.js.map +1 -0
  69. package/bin/Testing/Unit/bitmask-optimizer.test.d.ts +2 -0
  70. package/bin/Testing/Unit/bitmask-optimizer.test.d.ts.map +1 -0
  71. package/bin/Testing/Unit/bitmask-optimizer.test.js +164 -0
  72. package/bin/Testing/Unit/bitmask-optimizer.test.js.map +1 -0
  73. package/bin/Testing/Unit/component-pool.test.d.ts +5 -0
  74. package/bin/Testing/Unit/component-pool.test.d.ts.map +1 -0
  75. package/bin/Testing/Unit/component-pool.test.js +149 -0
  76. package/bin/Testing/Unit/component-pool.test.js.map +1 -0
  77. package/bin/Testing/test-runner.d.ts +51 -0
  78. package/bin/Testing/test-runner.d.ts.map +1 -0
  79. package/bin/Testing/test-runner.js +159 -0
  80. package/bin/Testing/test-runner.js.map +1 -0
  81. package/bin/Types/index.js +7 -4
  82. package/bin/Types/index.js.map +1 -1
  83. package/bin/Utils/Emitter.js +7 -2
  84. package/bin/Utils/Emitter.js.map +1 -1
  85. package/bin/Utils/Extensions/NumberExtension.js +5 -1
  86. package/bin/Utils/Extensions/NumberExtension.js.map +1 -1
  87. package/bin/Utils/Extensions/TypeUtils.js +5 -1
  88. package/bin/Utils/Extensions/TypeUtils.js.map +1 -1
  89. package/bin/Utils/Extensions/index.js +7 -2
  90. package/bin/Utils/Extensions/index.js.map +1 -1
  91. package/bin/Utils/GlobalManager.js +5 -1
  92. package/bin/Utils/GlobalManager.js.map +1 -1
  93. package/bin/Utils/PerformanceMonitor.js +9 -5
  94. package/bin/Utils/PerformanceMonitor.js.map +1 -1
  95. package/bin/Utils/Pool.js +9 -3
  96. package/bin/Utils/Pool.js.map +1 -1
  97. package/bin/Utils/Time.js +5 -1
  98. package/bin/Utils/Time.js.map +1 -1
  99. package/bin/Utils/Timers/ITimer.js +2 -1
  100. package/bin/Utils/Timers/Timer.js +7 -3
  101. package/bin/Utils/Timers/Timer.js.map +1 -1
  102. package/bin/Utils/Timers/TimerManager.js +8 -4
  103. package/bin/Utils/Timers/TimerManager.js.map +1 -1
  104. package/bin/Utils/WasmCore.d.ts +234 -0
  105. package/bin/Utils/WasmCore.d.ts.map +1 -0
  106. package/bin/Utils/WasmCore.js +634 -0
  107. package/bin/Utils/WasmCore.js.map +1 -0
  108. package/bin/Utils/index.d.ts +10 -0
  109. package/bin/Utils/index.d.ts.map +1 -1
  110. package/bin/Utils/index.js +36 -5
  111. package/bin/Utils/index.js.map +1 -1
  112. package/bin/index.d.ts +1 -2
  113. package/bin/index.d.ts.map +1 -1
  114. package/bin/index.js +42 -14
  115. package/bin/index.js.map +1 -1
  116. package/package.json +54 -74
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../../../src/Testing/Performance/benchmark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runBitMaskOptimizerTests(): void;
2
+ //# sourceMappingURL=bitmask-optimizer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitmask-optimizer.test.d.ts","sourceRoot":"","sources":["../../../src/Testing/Unit/bitmask-optimizer.test.ts"],"names":[],"mappings":"AA6LA,wBAAgB,wBAAwB,IAAI,IAAI,CAS/C"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runBitMaskOptimizerTests = runBitMaskOptimizerTests;
4
+ const BitMaskOptimizer_1 = require("../../ECS/Core/BitMaskOptimizer");
5
+ /**
6
+ * 位掩码优化器测试
7
+ */
8
+ function testBitMaskOptimizer() {
9
+ console.log('🧪 测试位掩码优化器');
10
+ const optimizer = BitMaskOptimizer_1.BitMaskOptimizer.getInstance();
11
+ optimizer.reset();
12
+ // 测试组件类型注册
13
+ console.log(' 📝 测试组件类型注册...');
14
+ const positionId = optimizer.registerComponentType('Position');
15
+ const velocityId = optimizer.registerComponentType('Velocity');
16
+ const healthId = optimizer.registerComponentType('Health');
17
+ console.log(` Position ID: ${positionId}`);
18
+ console.log(` Velocity ID: ${velocityId}`);
19
+ console.log(` Health ID: ${healthId}`);
20
+ // 测试单个组件掩码
21
+ console.log(' 🎯 测试单个组件掩码...');
22
+ const positionMask = optimizer.createSingleComponentMask('Position');
23
+ const velocityMask = optimizer.createSingleComponentMask('Velocity');
24
+ console.log(` Position掩码: ${positionMask.toString(2)}`);
25
+ console.log(` Velocity掩码: ${velocityMask.toString(2)}`);
26
+ // 测试组合掩码
27
+ console.log(' 🔗 测试组合掩码...');
28
+ const combinedMask = optimizer.createCombinedMask(['Position', 'Velocity']);
29
+ console.log(` Position+Velocity掩码: ${combinedMask.toString(2)}`);
30
+ // 测试掩码包含检查
31
+ console.log(' ✅ 测试掩码包含检查...');
32
+ const hasPosition = optimizer.maskContainsComponent(combinedMask, 'Position');
33
+ const hasVelocity = optimizer.maskContainsComponent(combinedMask, 'Velocity');
34
+ const hasHealth = optimizer.maskContainsComponent(combinedMask, 'Health');
35
+ console.log(` 包含Position: ${hasPosition}`);
36
+ console.log(` 包含Velocity: ${hasVelocity}`);
37
+ console.log(` 包含Health: ${hasHealth}`);
38
+ // 测试掩码操作
39
+ console.log(' 🔧 测试掩码操作...');
40
+ let entityMask = 0n;
41
+ entityMask = optimizer.addComponentToMask(entityMask, 'Position');
42
+ entityMask = optimizer.addComponentToMask(entityMask, 'Health');
43
+ console.log(` 添加Position和Health后: ${entityMask.toString(2)}`);
44
+ const hasAll = optimizer.maskContainsAllComponents(entityMask, ['Position', 'Health']);
45
+ const hasAny = optimizer.maskContainsAnyComponent(entityMask, ['Position', 'Velocity']);
46
+ console.log(` 包含Position和Health: ${hasAll}`);
47
+ console.log(` 包含Position或Velocity: ${hasAny}`);
48
+ // 测试掩码分析
49
+ console.log(' 📊 测试掩码分析...');
50
+ const componentNames = optimizer.maskToComponentNames(entityMask);
51
+ const componentCount = optimizer.getComponentCount(entityMask);
52
+ console.log(` 掩码包含的组件: ${componentNames.join(', ')}`);
53
+ console.log(` 组件数量: ${componentCount}`);
54
+ // 测试缓存统计
55
+ console.log(' 📈 测试缓存统计...');
56
+ const stats = optimizer.getCacheStats();
57
+ console.log(` 缓存大小: ${stats.size}`);
58
+ console.log(` 组件类型数量: ${stats.componentTypes}`);
59
+ // 测试预计算常用掩码
60
+ console.log(' ⚡ 测试预计算常用掩码...');
61
+ const commonCombinations = [
62
+ ['Position', 'Velocity'],
63
+ ['Position', 'Health'],
64
+ ['Position', 'Velocity', 'Health']
65
+ ];
66
+ optimizer.precomputeCommonMasks(commonCombinations);
67
+ const statsAfterPrecompute = optimizer.getCacheStats();
68
+ console.log(` 预计算后缓存大小: ${statsAfterPrecompute.size}`);
69
+ console.log('✅ 位掩码优化器测试完成');
70
+ }
71
+ /**
72
+ * 性能测试
73
+ */
74
+ function testBitMaskPerformance() {
75
+ console.log('\n🚀 位掩码优化器性能测试');
76
+ const optimizer = BitMaskOptimizer_1.BitMaskOptimizer.getInstance();
77
+ optimizer.reset();
78
+ // 注册组件类型
79
+ const componentTypes = ['Position', 'Velocity', 'Health', 'Render', 'AI', 'Physics', 'Audio', 'Network'];
80
+ for (const type of componentTypes) {
81
+ optimizer.registerComponentType(type);
82
+ }
83
+ const iterations = 100000;
84
+ // 测试单个掩码创建性能
85
+ console.log(' 🔥 测试单个掩码创建性能...');
86
+ let start = performance.now();
87
+ for (let i = 0; i < iterations; i++) {
88
+ optimizer.createSingleComponentMask('Position');
89
+ }
90
+ let end = performance.now();
91
+ console.log(` ${iterations}次单个掩码创建: ${(end - start).toFixed(2)}ms`);
92
+ // 测试组合掩码创建性能
93
+ console.log(' 🔥 测试组合掩码创建性能...');
94
+ start = performance.now();
95
+ for (let i = 0; i < iterations; i++) {
96
+ optimizer.createCombinedMask(['Position', 'Velocity', 'Health']);
97
+ }
98
+ end = performance.now();
99
+ console.log(` ${iterations}次组合掩码创建: ${(end - start).toFixed(2)}ms`);
100
+ // 测试掩码检查性能
101
+ console.log(' 🔥 测试掩码检查性能...');
102
+ const testMask = optimizer.createCombinedMask(['Position', 'Velocity', 'Health']);
103
+ start = performance.now();
104
+ for (let i = 0; i < iterations; i++) {
105
+ optimizer.maskContainsComponent(testMask, 'Position');
106
+ optimizer.maskContainsComponent(testMask, 'AI');
107
+ }
108
+ end = performance.now();
109
+ console.log(` ${iterations * 2}次掩码检查: ${(end - start).toFixed(2)}ms`);
110
+ // 对比原生位操作性能
111
+ console.log(' ⚖️ 对比原生位操作性能...');
112
+ const positionBit = 1n << 0n;
113
+ const velocityBit = 1n << 1n;
114
+ const healthBit = 1n << 2n;
115
+ const nativeMask = positionBit | velocityBit | healthBit;
116
+ start = performance.now();
117
+ for (let i = 0; i < iterations; i++) {
118
+ (nativeMask & positionBit) !== 0n;
119
+ (nativeMask & (1n << 7n)) !== 0n; // AI位
120
+ }
121
+ end = performance.now();
122
+ console.log(` ${iterations * 2}次原生位操作: ${(end - start).toFixed(2)}ms`);
123
+ console.log('✅ 性能测试完成');
124
+ }
125
+ /**
126
+ * 内存使用测试
127
+ */
128
+ function testBitMaskMemoryUsage() {
129
+ console.log('\n💾 位掩码优化器内存使用测试');
130
+ const optimizer = BitMaskOptimizer_1.BitMaskOptimizer.getInstance();
131
+ optimizer.reset();
132
+ // 注册大量组件类型
133
+ console.log(' 📝 注册组件类型...');
134
+ for (let i = 0; i < 100; i++) {
135
+ optimizer.registerComponentType(`Component${i}`);
136
+ }
137
+ // 创建大量掩码组合
138
+ console.log(' 🔗 创建掩码组合...');
139
+ const maskCount = 1000;
140
+ for (let i = 0; i < maskCount; i++) {
141
+ const componentCount = Math.floor(Math.random() * 5) + 1;
142
+ const components = [];
143
+ for (let j = 0; j < componentCount; j++) {
144
+ components.push(`Component${Math.floor(Math.random() * 100)}`);
145
+ }
146
+ optimizer.createCombinedMask(components);
147
+ }
148
+ const stats = optimizer.getCacheStats();
149
+ console.log(` 📊 最终统计:`);
150
+ console.log(` 组件类型数量: ${stats.componentTypes}`);
151
+ console.log(` 缓存掩码数量: ${stats.size}`);
152
+ console.log(` 平均每个掩码占用: ~${(stats.size * 64 / 1024).toFixed(2)} KB`);
153
+ console.log('✅ 内存使用测试完成');
154
+ }
155
+ // 运行所有测试
156
+ function runBitMaskOptimizerTests() {
157
+ console.log('🧪 位掩码优化器测试套件');
158
+ console.log('='.repeat(50));
159
+ testBitMaskOptimizer();
160
+ testBitMaskPerformance();
161
+ testBitMaskMemoryUsage();
162
+ console.log('\n✅ 所有测试完成');
163
+ }
164
+ //# sourceMappingURL=bitmask-optimizer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitmask-optimizer.test.js","sourceRoot":"","sources":["../../../src/Testing/Unit/bitmask-optimizer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 运行组件对象池测试
3
+ */
4
+ export declare function runComponentPoolTests(): void;
5
+ //# sourceMappingURL=component-pool.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-pool.test.d.ts","sourceRoot":"","sources":["../../../src/Testing/Unit/component-pool.test.ts"],"names":[],"mappings":"AAmBA;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAS5C"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runComponentPoolTests = runComponentPoolTests;
4
+ const ComponentPool_1 = require("../../ECS/Core/ComponentPool");
5
+ const Component_1 = require("../../ECS/Component");
6
+ /**
7
+ * 测试用组件
8
+ */
9
+ class TestComponent extends Component_1.Component {
10
+ constructor(value = 0) {
11
+ super();
12
+ this.value = 0;
13
+ this.value = value;
14
+ }
15
+ reset() {
16
+ this.value = 0;
17
+ }
18
+ }
19
+ /**
20
+ * 运行组件对象池测试
21
+ */
22
+ function runComponentPoolTests() {
23
+ console.log('🧪 组件对象池测试');
24
+ console.log('='.repeat(50));
25
+ testBasicFunctionality();
26
+ testPoolManager();
27
+ testPerformance();
28
+ console.log('✅ 组件对象池测试完成');
29
+ }
30
+ /**
31
+ * 基础功能测试
32
+ */
33
+ function testBasicFunctionality() {
34
+ console.log('\n📝 基础功能测试...');
35
+ const pool = new ComponentPool_1.ComponentPool(() => new TestComponent(), (component) => component.reset(), 10);
36
+ // 测试获取新组件实例
37
+ console.log(' 测试获取新组件实例...');
38
+ const component = pool.acquire();
39
+ console.assert(component instanceof TestComponent, '应该返回TestComponent实例');
40
+ console.assert(component.value === 0, '新组件的值应该为0');
41
+ // 测试释放和复用
42
+ console.log(' 测试组件释放和复用...');
43
+ component.value = 42;
44
+ pool.release(component);
45
+ console.assert(pool.getAvailableCount() === 1, '池中应该有1个可用组件');
46
+ const reusedComponent = pool.acquire();
47
+ console.assert(reusedComponent === component, '应该复用同一个组件实例');
48
+ console.assert(reusedComponent.value === 0, '复用的组件应该被重置');
49
+ // 测试预填充
50
+ console.log(' 测试对象池预填充...');
51
+ pool.prewarm(5);
52
+ console.assert(pool.getAvailableCount() === 5, '预填充后应该有5个可用组件');
53
+ const components = [];
54
+ for (let i = 0; i < 5; i++) {
55
+ components.push(pool.acquire());
56
+ }
57
+ console.assert(pool.getAvailableCount() === 0, '获取5个组件后池应该为空');
58
+ // 测试最大容量限制
59
+ console.log(' 测试最大容量限制...');
60
+ pool.prewarm(10);
61
+ const extraComponent = new TestComponent();
62
+ pool.release(extraComponent);
63
+ console.assert(pool.getAvailableCount() === 10, '不应该超过最大容量');
64
+ // 测试清空池
65
+ console.log(' 测试清空对象池...');
66
+ pool.clear();
67
+ console.assert(pool.getAvailableCount() === 0, '清空后池应该为空');
68
+ console.log(' ✅ 基础功能测试通过');
69
+ }
70
+ /**
71
+ * 池管理器测试
72
+ */
73
+ function testPoolManager() {
74
+ console.log('\n📝 池管理器测试...');
75
+ const manager = ComponentPool_1.ComponentPoolManager.getInstance();
76
+ manager.clearAll();
77
+ // 测试单例模式
78
+ console.log(' 测试单例模式...');
79
+ const manager1 = ComponentPool_1.ComponentPoolManager.getInstance();
80
+ const manager2 = ComponentPool_1.ComponentPoolManager.getInstance();
81
+ console.assert(manager1 === manager2, '应该返回同一个实例');
82
+ // 测试注册组件池
83
+ console.log(' 测试注册组件池...');
84
+ manager.registerPool('TestComponent', () => new TestComponent(), (component) => component.reset(), 5);
85
+ const stats = manager.getPoolStats();
86
+ console.assert(stats.has('TestComponent'), '应该包含已注册的组件类型');
87
+ console.assert(stats.get('TestComponent')?.maxSize === 5, '最大容量应该为5');
88
+ // 测试获取和释放组件
89
+ console.log(' 测试获取和释放组件...');
90
+ const component = manager.acquireComponent('TestComponent');
91
+ console.assert(component instanceof TestComponent, '应该返回TestComponent实例');
92
+ if (component) {
93
+ component.value = 42;
94
+ manager.releaseComponent('TestComponent', component);
95
+ const reusedComponent = manager.acquireComponent('TestComponent');
96
+ console.assert(reusedComponent === component, '应该复用同一个组件');
97
+ console.assert(reusedComponent?.value === 0, '复用的组件应该被重置');
98
+ }
99
+ // 测试预热所有池
100
+ console.log(' 测试预热所有池...');
101
+ manager.registerPool('TestComponent1', () => new TestComponent());
102
+ manager.registerPool('TestComponent2', () => new TestComponent());
103
+ manager.prewarmAll(3);
104
+ const finalStats = manager.getPoolStats();
105
+ console.assert(finalStats.get('TestComponent1')?.available === 3, 'TestComponent1应该有3个可用组件');
106
+ console.assert(finalStats.get('TestComponent2')?.available === 3, 'TestComponent2应该有3个可用组件');
107
+ // 测试未注册的组件类型
108
+ console.log(' 测试未注册的组件类型...');
109
+ const nullComponent = manager.acquireComponent('NonExistentComponent');
110
+ console.assert(nullComponent === null, '未注册的组件类型应该返回null');
111
+ manager.clearAll();
112
+ console.log(' ✅ 池管理器测试通过');
113
+ }
114
+ /**
115
+ * 性能测试
116
+ */
117
+ function testPerformance() {
118
+ console.log('\n📝 性能测试...');
119
+ const pool = new ComponentPool_1.ComponentPool(() => new TestComponent());
120
+ const iterations = 10000;
121
+ // 预热池
122
+ pool.prewarm(100);
123
+ // 测试对象池性能
124
+ const poolStart = performance.now();
125
+ for (let i = 0; i < iterations; i++) {
126
+ const component = pool.acquire();
127
+ pool.release(component);
128
+ }
129
+ const poolEnd = performance.now();
130
+ const poolTime = poolEnd - poolStart;
131
+ // 测试直接创建性能
132
+ const directStart = performance.now();
133
+ for (let i = 0; i < iterations; i++) {
134
+ new TestComponent();
135
+ }
136
+ const directEnd = performance.now();
137
+ const directTime = directEnd - directStart;
138
+ console.log(` 对象池时间: ${poolTime.toFixed(2)}ms`);
139
+ console.log(` 直接创建时间: ${directTime.toFixed(2)}ms`);
140
+ const improvement = ((directTime - poolTime) / directTime * 100);
141
+ console.log(` 性能提升: ${improvement.toFixed(1)}%`);
142
+ if (poolTime < directTime) {
143
+ console.log(' ✅ 对象池性能测试通过 - 比直接创建更快');
144
+ }
145
+ else {
146
+ console.log(' ⚠️ 对象池在小规模测试中可能不如直接创建快');
147
+ }
148
+ }
149
+ //# sourceMappingURL=component-pool.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-pool.test.js","sourceRoot":"","sources":["../../../src/Testing/Unit/component-pool.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * 测试运行器 - 统一运行所有测试
3
+ */
4
+ export declare class TestRunner {
5
+ private results;
6
+ /**
7
+ * 运行所有单元测试
8
+ */
9
+ runUnitTests(): Promise<void>;
10
+ /**
11
+ * 运行性能测试
12
+ */
13
+ runPerformanceTests(): Promise<void>;
14
+ /**
15
+ * 运行集成测试
16
+ */
17
+ runIntegrationTests(): Promise<void>;
18
+ /**
19
+ * 运行所有测试
20
+ */
21
+ runAllTests(): Promise<void>;
22
+ /**
23
+ * 运行单个测试
24
+ */
25
+ private runTest;
26
+ /**
27
+ * 打印测试摘要
28
+ */
29
+ private printSummary;
30
+ /**
31
+ * 打印最终测试摘要
32
+ */
33
+ private printFinalSummary;
34
+ /**
35
+ * 清除测试结果
36
+ */
37
+ clearResults(): void;
38
+ }
39
+ /**
40
+ * 便捷函数:运行所有测试
41
+ */
42
+ export declare function runAllTests(): Promise<void>;
43
+ /**
44
+ * 便捷函数:仅运行单元测试
45
+ */
46
+ export declare function runUnitTests(): Promise<void>;
47
+ /**
48
+ * 便捷函数:仅运行性能测试
49
+ */
50
+ export declare function runPerformanceTests(): Promise<void>;
51
+ //# sourceMappingURL=test-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../src/Testing/test-runner.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,OAAO,CAAgF;IAE/F;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnC;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1C;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1C;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlC;;OAEG;YACW,OAAO;IAwBrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,YAAY,IAAI,IAAI;CAGvB;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGzD"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestRunner = void 0;
4
+ exports.runAllTests = runAllTests;
5
+ exports.runUnitTests = runUnitTests;
6
+ exports.runPerformanceTests = runPerformanceTests;
7
+ const bitmask_optimizer_test_1 = require("./Unit/bitmask-optimizer.test");
8
+ const component_pool_test_1 = require("./Unit/component-pool.test");
9
+ /**
10
+ * 测试运行器 - 统一运行所有测试
11
+ */
12
+ class TestRunner {
13
+ constructor() {
14
+ this.results = new Map();
15
+ }
16
+ /**
17
+ * 运行所有单元测试
18
+ */
19
+ async runUnitTests() {
20
+ console.log('🧪 运行单元测试');
21
+ console.log('='.repeat(50));
22
+ await this.runTest('组件对象池', component_pool_test_1.runComponentPoolTests);
23
+ await this.runTest('位掩码优化器', bitmask_optimizer_test_1.runBitMaskOptimizerTests);
24
+ console.log('\n📊 单元测试总结:');
25
+ this.printSummary();
26
+ }
27
+ /**
28
+ * 运行性能测试
29
+ */
30
+ async runPerformanceTests() {
31
+ console.log('\n🚀 运行性能测试');
32
+ console.log('='.repeat(50));
33
+ // 性能测试需要从benchmark.ts文件中导入
34
+ console.log('⚠️ 性能测试需要单独运行 - 请使用: node benchmark.ts');
35
+ console.log('\n📊 性能测试总结:');
36
+ this.printSummary();
37
+ }
38
+ /**
39
+ * 运行集成测试
40
+ */
41
+ async runIntegrationTests() {
42
+ console.log('\n🔗 运行集成测试');
43
+ console.log('='.repeat(50));
44
+ // 集成测试待实现
45
+ console.log('⚠️ 集成测试尚未实现');
46
+ }
47
+ /**
48
+ * 运行所有测试
49
+ */
50
+ async runAllTests() {
51
+ console.log('🎯 ECS框架完整测试套件');
52
+ console.log('='.repeat(60));
53
+ const startTime = performance.now();
54
+ await this.runUnitTests();
55
+ await this.runPerformanceTests();
56
+ await this.runIntegrationTests();
57
+ const endTime = performance.now();
58
+ const totalDuration = endTime - startTime;
59
+ console.log('\n✅ 所有测试完成');
60
+ console.log(`🕐 总测试时间: ${(totalDuration / 1000).toFixed(2)}秒`);
61
+ this.printFinalSummary();
62
+ }
63
+ /**
64
+ * 运行单个测试
65
+ */
66
+ async runTest(testName, testFunction) {
67
+ console.log(`\n▶️ 开始测试: ${testName}`);
68
+ const startTime = performance.now();
69
+ let passed = 0;
70
+ let failed = 0;
71
+ try {
72
+ await testFunction();
73
+ passed = 1;
74
+ console.log(`✅ ${testName} 测试通过`);
75
+ }
76
+ catch (error) {
77
+ failed = 1;
78
+ console.error(`❌ ${testName} 测试失败:`, error);
79
+ }
80
+ const endTime = performance.now();
81
+ const duration = endTime - startTime;
82
+ this.results.set(testName, { passed, failed, duration });
83
+ console.log(`⏱️ 耗时: ${duration.toFixed(2)}ms`);
84
+ }
85
+ /**
86
+ * 打印测试摘要
87
+ */
88
+ printSummary() {
89
+ let totalPassed = 0;
90
+ let totalFailed = 0;
91
+ let totalDuration = 0;
92
+ for (const [name, result] of this.results) {
93
+ totalPassed += result.passed;
94
+ totalFailed += result.failed;
95
+ totalDuration += result.duration;
96
+ const status = result.failed > 0 ? '❌' : '✅';
97
+ console.log(` ${status} ${name}: ${result.duration.toFixed(2)}ms`);
98
+ }
99
+ console.log(`\n📈 测试统计:`);
100
+ console.log(` 通过: ${totalPassed}`);
101
+ console.log(` 失败: ${totalFailed}`);
102
+ console.log(` 总时间: ${totalDuration.toFixed(2)}ms`);
103
+ console.log(` 成功率: ${totalPassed + totalFailed > 0 ? (totalPassed / (totalPassed + totalFailed) * 100).toFixed(1) : 0}%`);
104
+ }
105
+ /**
106
+ * 打印最终测试摘要
107
+ */
108
+ printFinalSummary() {
109
+ console.log('\n📋 最终测试报告');
110
+ console.log('='.repeat(60));
111
+ let totalPassed = 0;
112
+ let totalFailed = 0;
113
+ for (const [, result] of this.results) {
114
+ totalPassed += result.passed;
115
+ totalFailed += result.failed;
116
+ }
117
+ if (totalFailed === 0) {
118
+ console.log('🎉 所有测试都通过了!');
119
+ }
120
+ else {
121
+ console.log(`⚠️ 有 ${totalFailed} 个测试失败`);
122
+ }
123
+ console.log(`📊 测试覆盖率: ${this.results.size} 个测试模块`);
124
+ console.log(`✅ 通过率: ${totalPassed + totalFailed > 0 ? (totalPassed / (totalPassed + totalFailed) * 100).toFixed(1) : 0}%`);
125
+ }
126
+ /**
127
+ * 清除测试结果
128
+ */
129
+ clearResults() {
130
+ this.results.clear();
131
+ }
132
+ }
133
+ exports.TestRunner = TestRunner;
134
+ /**
135
+ * 便捷函数:运行所有测试
136
+ */
137
+ async function runAllTests() {
138
+ const runner = new TestRunner();
139
+ await runner.runAllTests();
140
+ }
141
+ /**
142
+ * 便捷函数:仅运行单元测试
143
+ */
144
+ async function runUnitTests() {
145
+ const runner = new TestRunner();
146
+ await runner.runUnitTests();
147
+ }
148
+ /**
149
+ * 便捷函数:仅运行性能测试
150
+ */
151
+ async function runPerformanceTests() {
152
+ const runner = new TestRunner();
153
+ await runner.runPerformanceTests();
154
+ }
155
+ // 如果直接运行此文件,执行所有测试
156
+ if (require.main === module) {
157
+ runAllTests().catch(console.error);
158
+ }
159
+ //# sourceMappingURL=test-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../../src/Testing/test-runner.ts"],"names":[],"mappings":";;;AA6JA,kCAGC;AAKD,oCAGC;AAKD,kDAGC;AAhLD,0EAAyE;AACzE,oEAAmE;AAEnE;;GAEG;AACH,MAAa,UAAU;IAAvB;QACY,YAAO,GAAsE,IAAI,GAAG,EAAE,CAAC;IAiJnG,CAAC;IA/IG;;OAEG;IACH,KAAK,CAAC,YAAY;QACd,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5B,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,2CAAqB,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,iDAAwB,CAAC,CAAC;QAEvD,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACrB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5B,2BAA2B;QAC3B,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACrB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5B,UAAU;QACV,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACb,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;QAE1C,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE/D,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,YAAwC;QAC5E,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC;QAEtC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,IAAI,CAAC;YACD,MAAM,YAAY,EAAE,CAAC;YACrB,MAAM,GAAG,CAAC,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,OAAO,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,CAAC,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;QAErC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEzD,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACK,YAAY;QAChB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC;YAC7B,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC;YAC7B,aAAa,IAAI,MAAM,CAAC,QAAQ,CAAC;YAEjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,UAAU,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,UAAU,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/H,CAAC;IAED;;OAEG;IACK,iBAAiB;QACrB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5B,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC;YAC7B,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC;QACjC,CAAC;QAED,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,QAAQ,WAAW,QAAQ,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,UAAU,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/H,CAAC;IAED;;OAEG;IACH,YAAY;QACR,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACJ;AAlJD,gCAkJC;AAED;;GAEG;AACI,KAAK,UAAU,WAAW;IAC7B,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAChC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,YAAY;IAC9B,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAChC,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB;IACrC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAChC,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACvC,CAAC;AAED,mBAAmB;AACnB,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC1B,WAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC"}