@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.
- package/bin/Core.js +23 -21
- package/bin/Core.js.map +1 -1
- package/bin/ECS/Component.js +5 -1
- package/bin/ECS/Component.js.map +1 -1
- package/bin/ECS/Components/IUpdatable.js +7 -2
- package/bin/ECS/Components/IUpdatable.js.map +1 -1
- package/bin/ECS/Components/SceneComponent.js +5 -1
- package/bin/ECS/Components/SceneComponent.js.map +1 -1
- package/bin/ECS/Core/BitMaskOptimizer.d.ts +75 -0
- package/bin/ECS/Core/BitMaskOptimizer.d.ts.map +1 -0
- package/bin/ECS/Core/BitMaskOptimizer.js +165 -0
- package/bin/ECS/Core/BitMaskOptimizer.js.map +1 -0
- package/bin/ECS/Core/ComponentPool.d.ts +72 -0
- package/bin/ECS/Core/ComponentPool.d.ts.map +1 -0
- package/bin/ECS/Core/ComponentPool.js +128 -0
- package/bin/ECS/Core/ComponentPool.js.map +1 -0
- package/bin/ECS/Core/ComponentStorage.js +9 -3
- package/bin/ECS/Core/ComponentStorage.js.map +1 -1
- package/bin/ECS/Core/EventSystem.js +13 -7
- package/bin/ECS/Core/EventSystem.js.map +1 -1
- package/bin/ECS/Core/FluentAPI.js +24 -17
- package/bin/ECS/Core/FluentAPI.js.map +1 -1
- package/bin/ECS/Core/IndexUpdateBatcher.d.ts +100 -0
- package/bin/ECS/Core/IndexUpdateBatcher.d.ts.map +1 -0
- package/bin/ECS/Core/IndexUpdateBatcher.js +223 -0
- package/bin/ECS/Core/IndexUpdateBatcher.js.map +1 -0
- package/bin/ECS/Core/QuerySystem.d.ts +292 -444
- package/bin/ECS/Core/QuerySystem.d.ts.map +1 -1
- package/bin/ECS/Core/QuerySystem.js +661 -1075
- package/bin/ECS/Core/QuerySystem.js.map +1 -1
- package/bin/ECS/CoreEvents.js +5 -2
- package/bin/ECS/CoreEvents.js.map +1 -1
- package/bin/ECS/Entity.js +18 -14
- package/bin/ECS/Entity.js.map +1 -1
- package/bin/ECS/Scene.d.ts +18 -2
- package/bin/ECS/Scene.d.ts.map +1 -1
- package/bin/ECS/Scene.js +72 -27
- package/bin/ECS/Scene.js.map +1 -1
- package/bin/ECS/Systems/EntitySystem.js +9 -5
- package/bin/ECS/Systems/EntitySystem.js.map +1 -1
- package/bin/ECS/Systems/IntervalSystem.js +8 -4
- package/bin/ECS/Systems/IntervalSystem.js.map +1 -1
- package/bin/ECS/Systems/PassiveSystem.js +6 -2
- package/bin/ECS/Systems/PassiveSystem.js.map +1 -1
- package/bin/ECS/Systems/ProcessingSystem.js +6 -2
- package/bin/ECS/Systems/ProcessingSystem.js.map +1 -1
- package/bin/ECS/Systems/index.js +11 -4
- package/bin/ECS/Systems/index.js.map +1 -1
- package/bin/ECS/Utils/Bits.js +5 -1
- package/bin/ECS/Utils/Bits.js.map +1 -1
- package/bin/ECS/Utils/ComponentTypeManager.js +8 -4
- package/bin/ECS/Utils/ComponentTypeManager.js.map +1 -1
- package/bin/ECS/Utils/EntityList.js +5 -1
- package/bin/ECS/Utils/EntityList.js.map +1 -1
- package/bin/ECS/Utils/EntityProcessorList.js +5 -1
- package/bin/ECS/Utils/EntityProcessorList.js.map +1 -1
- package/bin/ECS/Utils/IdentifierPool.js +5 -1
- package/bin/ECS/Utils/IdentifierPool.js.map +1 -1
- package/bin/ECS/Utils/Matcher.js +8 -4
- package/bin/ECS/Utils/Matcher.js.map +1 -1
- package/bin/ECS/Utils/index.js +15 -6
- package/bin/ECS/Utils/index.js.map +1 -1
- package/bin/ECS/index.js +27 -6
- package/bin/ECS/index.js.map +1 -1
- package/bin/Testing/Performance/benchmark.d.ts +6 -0
- package/bin/Testing/Performance/benchmark.d.ts.map +1 -0
- package/bin/Testing/Performance/benchmark.js +639 -0
- package/bin/Testing/Performance/benchmark.js.map +1 -0
- package/bin/Testing/Unit/bitmask-optimizer.test.d.ts +2 -0
- package/bin/Testing/Unit/bitmask-optimizer.test.d.ts.map +1 -0
- package/bin/Testing/Unit/bitmask-optimizer.test.js +164 -0
- package/bin/Testing/Unit/bitmask-optimizer.test.js.map +1 -0
- package/bin/Testing/Unit/component-pool.test.d.ts +5 -0
- package/bin/Testing/Unit/component-pool.test.d.ts.map +1 -0
- package/bin/Testing/Unit/component-pool.test.js +149 -0
- package/bin/Testing/Unit/component-pool.test.js.map +1 -0
- package/bin/Testing/test-runner.d.ts +51 -0
- package/bin/Testing/test-runner.d.ts.map +1 -0
- package/bin/Testing/test-runner.js +159 -0
- package/bin/Testing/test-runner.js.map +1 -0
- package/bin/Types/index.js +7 -4
- package/bin/Types/index.js.map +1 -1
- package/bin/Utils/Emitter.js +7 -2
- package/bin/Utils/Emitter.js.map +1 -1
- package/bin/Utils/Extensions/NumberExtension.js +5 -1
- package/bin/Utils/Extensions/NumberExtension.js.map +1 -1
- package/bin/Utils/Extensions/TypeUtils.js +5 -1
- package/bin/Utils/Extensions/TypeUtils.js.map +1 -1
- package/bin/Utils/Extensions/index.js +7 -2
- package/bin/Utils/Extensions/index.js.map +1 -1
- package/bin/Utils/GlobalManager.js +5 -1
- package/bin/Utils/GlobalManager.js.map +1 -1
- package/bin/Utils/PerformanceMonitor.js +9 -5
- package/bin/Utils/PerformanceMonitor.js.map +1 -1
- package/bin/Utils/Pool.js +9 -3
- package/bin/Utils/Pool.js.map +1 -1
- package/bin/Utils/Time.js +5 -1
- package/bin/Utils/Time.js.map +1 -1
- package/bin/Utils/Timers/ITimer.js +2 -1
- package/bin/Utils/Timers/Timer.js +7 -3
- package/bin/Utils/Timers/Timer.js.map +1 -1
- package/bin/Utils/Timers/TimerManager.js +8 -4
- package/bin/Utils/Timers/TimerManager.js.map +1 -1
- package/bin/Utils/WasmCore.d.ts +234 -0
- package/bin/Utils/WasmCore.d.ts.map +1 -0
- package/bin/Utils/WasmCore.js +634 -0
- package/bin/Utils/WasmCore.js.map +1 -0
- package/bin/Utils/index.d.ts +10 -0
- package/bin/Utils/index.d.ts.map +1 -1
- package/bin/Utils/index.js +36 -5
- package/bin/Utils/index.js.map +1 -1
- package/bin/index.d.ts +1 -2
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +42 -14
- package/bin/index.js.map +1 -1
- 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 @@
|
|
|
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 @@
|
|
|
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":"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"}
|