diff --git a/packages/core/jest.config.cjs b/packages/core/jest.config.cjs index 07a1193d..9348cca2 100644 --- a/packages/core/jest.config.cjs +++ b/packages/core/jest.config.cjs @@ -4,7 +4,7 @@ module.exports = { testEnvironment: 'node', roots: ['/tests'], testMatch: ['**/*.test.ts', '**/*.spec.ts'], - testPathIgnorePatterns: ['/node_modules/', '\\.performance\\.test\\.ts$'], + testPathIgnorePatterns: ['/node_modules/', '\\.performance\\.test\\.ts$', '/tests/performance/'], collectCoverage: false, collectCoverageFrom: [ 'src/**/*.ts', diff --git a/packages/core/jest.performance.config.cjs b/packages/core/jest.performance.config.cjs new file mode 100644 index 00000000..ee41fb1e --- /dev/null +++ b/packages/core/jest.performance.config.cjs @@ -0,0 +1,28 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + roots: ['/tests'], + testMatch: ['**/performance/**/*.test.ts', '**/*.performance.test.ts'], + collectCoverage: false, + verbose: true, + transform: { + '^.+\\.tsx?$': ['ts-jest', { + tsconfig: 'tsconfig.json', + useESM: false, + }], + }, + moduleNameMapper: { + '^@/(.*)$': '/src/$1', + }, + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + setupFilesAfterEnv: ['/tests/setup.ts'], + testTimeout: 30000, + clearMocks: true, + restoreMocks: true, + modulePathIgnorePatterns: [ + '/bin/', + '/dist/', + '/node_modules/' + ] +}; \ No newline at end of file diff --git a/packages/core/tests/ECS/Core/ComponentStorage.comparison.test.ts b/packages/core/tests/performance/ComponentStorage.comparison.test.ts similarity index 99% rename from packages/core/tests/ECS/Core/ComponentStorage.comparison.test.ts rename to packages/core/tests/performance/ComponentStorage.comparison.test.ts index d1cbb45d..525c289b 100644 --- a/packages/core/tests/ECS/Core/ComponentStorage.comparison.test.ts +++ b/packages/core/tests/performance/ComponentStorage.comparison.test.ts @@ -1,6 +1,6 @@ -import { Component } from '../../../src/ECS/Component'; -import { ComponentStorage, ComponentStorageManager, EnableSoA } from '../../../src/ECS/Core/ComponentStorage'; -import { SoAStorage } from '../../../src/ECS/Core/SoAStorage'; +import { Component } from '../../src/ECS/Component'; +import { ComponentStorage, ComponentStorageManager, EnableSoA } from '../../src/ECS/Core/ComponentStorage'; +import { SoAStorage } from '../../src/ECS/Core/SoAStorage'; // 测试用统一组件结构(启用SoA) @EnableSoA diff --git a/packages/core/tests/ECS/Core/DetailedPerformanceAnalysis.performance.test.ts b/packages/core/tests/performance/DetailedPerformanceAnalysis.performance.test.ts similarity index 97% rename from packages/core/tests/ECS/Core/DetailedPerformanceAnalysis.performance.test.ts rename to packages/core/tests/performance/DetailedPerformanceAnalysis.performance.test.ts index 6347d2e0..51e5da77 100644 --- a/packages/core/tests/ECS/Core/DetailedPerformanceAnalysis.performance.test.ts +++ b/packages/core/tests/performance/DetailedPerformanceAnalysis.performance.test.ts @@ -1,6 +1,6 @@ -import { EntityManager } from '../../../src/ECS/Core/EntityManager'; -import { ComponentTypeManager } from '../../../src/ECS/Utils/ComponentTypeManager'; -import { Entity } from '../../../src/ECS/Entity'; +import { EntityManager } from '../../src/ECS/Core/EntityManager'; +import { ComponentTypeManager } from '../../src/ECS/Utils/ComponentTypeManager'; +import { Entity } from '../../src/ECS/Entity'; describe('详细性能分析 - 逐步测量', () => { let entityManager: EntityManager; diff --git a/packages/core/tests/ECS/Entity.performance.test.ts b/packages/core/tests/performance/Entity.performance.test.ts similarity index 100% rename from packages/core/tests/ECS/Entity.performance.test.ts rename to packages/core/tests/performance/Entity.performance.test.ts diff --git a/packages/core/tests/ECS/Core/EntityCreationPerformance.test.ts b/packages/core/tests/performance/EntityCreationPerformance.test.ts similarity index 96% rename from packages/core/tests/ECS/Core/EntityCreationPerformance.test.ts rename to packages/core/tests/performance/EntityCreationPerformance.test.ts index 6c2d2946..80e0fac8 100644 --- a/packages/core/tests/ECS/Core/EntityCreationPerformance.test.ts +++ b/packages/core/tests/performance/EntityCreationPerformance.test.ts @@ -1,5 +1,5 @@ -import { EntityManager } from '../../../src/ECS/Core/EntityManager'; -import { ComponentTypeManager } from '../../../src/ECS/Utils/ComponentTypeManager'; +import { EntityManager } from '../../src/ECS/Core/EntityManager'; +import { ComponentTypeManager } from '../../src/ECS/Utils/ComponentTypeManager'; describe('实体创建性能分析', () => { let entityManager: EntityManager; @@ -59,7 +59,7 @@ describe('实体创建性能分析', () => { const directEntities: any[] = []; for (let i = 0; i < entityCount; i++) { // 直接创建Entity,不通过EntityManager的复杂逻辑 - directEntities.push(new (require('../../../src/ECS/Entity').Entity)(`Direct_${i}`, i)); + directEntities.push(new (require('../../src/ECS/Entity').Entity)(`Direct_${i}`, i)); } endTime = performance.now(); console.log(`4. 直接创建Entity: ${(endTime - startTime).toFixed(2)}ms`); @@ -91,7 +91,7 @@ describe('实体创建性能分析', () => { // 步骤2: Entity创建 stepTime = performance.now(); - const entity = new (require('../../../src/ECS/Entity').Entity)(name, id); + const entity = new (require('../../src/ECS/Entity').Entity)(name, id); stepTimes['Entity创建'] = (stepTimes['Entity创建'] || 0) + (performance.now() - stepTime); // 步骤3: 各种索引更新 diff --git a/packages/core/tests/ECS/Core/InitializationComparison.performance.test.ts b/packages/core/tests/performance/InitializationComparison.performance.test.ts similarity index 97% rename from packages/core/tests/ECS/Core/InitializationComparison.performance.test.ts rename to packages/core/tests/performance/InitializationComparison.performance.test.ts index 296a510f..3e4b7563 100644 --- a/packages/core/tests/ECS/Core/InitializationComparison.performance.test.ts +++ b/packages/core/tests/performance/InitializationComparison.performance.test.ts @@ -1,6 +1,6 @@ -import { Entity } from '../../../src/ECS/Entity'; -import { BigIntFactory } from '../../../src/ECS/Utils/BigIntCompatibility'; -import { ComponentType } from '../../../src/ECS/Core/ComponentStorage'; +import { Entity } from '../../src/ECS/Entity'; +import { BigIntFactory } from '../../src/ECS/Utils/BigIntCompatibility'; +import { ComponentType } from '../../src/ECS/Core/ComponentStorage'; describe('初始化方式性能对比', () => { test('对比不同初始化方式的性能', () => { diff --git a/packages/core/tests/ECS/Core/OptimizedPerformanceAnalysis.performance.test.ts b/packages/core/tests/performance/OptimizedPerformanceAnalysis.performance.test.ts similarity index 97% rename from packages/core/tests/ECS/Core/OptimizedPerformanceAnalysis.performance.test.ts rename to packages/core/tests/performance/OptimizedPerformanceAnalysis.performance.test.ts index c6f65d4d..47018f31 100644 --- a/packages/core/tests/ECS/Core/OptimizedPerformanceAnalysis.performance.test.ts +++ b/packages/core/tests/performance/OptimizedPerformanceAnalysis.performance.test.ts @@ -1,6 +1,6 @@ -import { EntityManager } from '../../../src/ECS/Core/EntityManager'; -import { ComponentTypeManager } from '../../../src/ECS/Utils/ComponentTypeManager'; -import { Entity } from '../../../src/ECS/Entity'; +import { EntityManager } from '../../src/ECS/Core/EntityManager'; +import { ComponentTypeManager } from '../../src/ECS/Utils/ComponentTypeManager'; +import { Entity } from '../../src/ECS/Entity'; describe('优化后的性能分析 - ComponentIndexManager优化', () => { let entityManager: EntityManager;