新增wasm以优化实体update速度
This commit is contained in:
53
source/src/Testing/Performance/component-performance.js
Normal file
53
source/src/Testing/Performance/component-performance.js
Normal file
@@ -0,0 +1,53 @@
|
||||
const { Scene } = require('./bin/ECS/Scene.js');
|
||||
|
||||
const { Component } = require('./bin/ECS/Component.js');
|
||||
|
||||
// 简单的组件类
|
||||
class TestComponent extends Component {
|
||||
constructor(value) {
|
||||
super();
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
|
||||
console.log('🔬 组件添加性能分析');
|
||||
|
||||
// 创建场景和实体
|
||||
const scene = new Scene();
|
||||
console.log('✅ 创建场景完成');
|
||||
|
||||
const startCreate = performance.now();
|
||||
const entities = scene.createEntities(5000, 'TestEntity');
|
||||
const endCreate = performance.now();
|
||||
|
||||
console.log(`✅ 创建了 ${entities.length} 个实体,耗时: ${(endCreate - startCreate).toFixed(2)}ms`);
|
||||
|
||||
// 测试单个组件添加性能
|
||||
console.log('\n📊 测试组件添加性能:');
|
||||
|
||||
const startAdd = performance.now();
|
||||
for (let i = 0; i < entities.length; i++) {
|
||||
const entity = entities[i];
|
||||
entity.addComponent(new TestComponent(i));
|
||||
}
|
||||
const endAdd = performance.now();
|
||||
|
||||
const addTime = endAdd - startAdd;
|
||||
console.log(`添加 ${entities.length} 个组件耗时: ${addTime.toFixed(2)}ms`);
|
||||
console.log(`平均每个组件: ${(addTime / entities.length).toFixed(4)}ms`);
|
||||
console.log(`添加速度: ${(entities.length / (addTime / 1000)).toFixed(0)} 组件/秒`);
|
||||
|
||||
// 测试组件获取性能
|
||||
console.log('\n📊 测试组件获取性能:');
|
||||
|
||||
const startGet = performance.now();
|
||||
for (let i = 0; i < entities.length; i++) {
|
||||
const entity = entities[i];
|
||||
const component = entity.getComponent(TestComponent);
|
||||
}
|
||||
const endGet = performance.now();
|
||||
|
||||
const getTime = endGet - startGet;
|
||||
console.log(`获取 ${entities.length} 个组件耗时: ${getTime.toFixed(2)}ms`);
|
||||
console.log(`平均每个组件: ${(getTime / entities.length).toFixed(4)}ms`);
|
||||
console.log(`获取速度: ${(entities.length / (getTime / 1000)).toFixed(0)} 组件/秒`);
|
||||
Reference in New Issue
Block a user