先移除wasm后续再通过其他方式接入
This commit is contained in:
@@ -1,39 +0,0 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* ECS框架性能基准测试入口
|
||||
*
|
||||
* 使用方法:
|
||||
* node benchmark.js
|
||||
*/
|
||||
|
||||
const { execSync } = require('child_process');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
console.log('🚀 启动ECS框架性能基准测试...\n');
|
||||
|
||||
const sourceDir = path.join(__dirname, '..');
|
||||
|
||||
try {
|
||||
console.log('📦 准备构建项目...');
|
||||
|
||||
// 构建TypeScript代码
|
||||
console.log('🔨 构建TypeScript代码...');
|
||||
execSync('npm run build', {
|
||||
stdio: 'inherit',
|
||||
cwd: sourceDir
|
||||
});
|
||||
console.log('✅ TypeScript构建完成\n');
|
||||
|
||||
// 运行性能测试
|
||||
console.log('🏃 运行性能基准测试...');
|
||||
execSync('node bin/Testing/Performance/benchmark.js', {
|
||||
stdio: 'inherit',
|
||||
cwd: sourceDir
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 性能测试失败:', error.message);
|
||||
process.exit(1);
|
||||
}
|
||||
@@ -106,9 +106,6 @@ function copyFiles() {
|
||||
console.log(` ⚠️ 文件不存在: ${src}`);
|
||||
}
|
||||
});
|
||||
|
||||
// WASM文件不再包含在npm包中,单独发布
|
||||
console.log(' ⚠️ WASM文件已移除,请从GitHub Release下载单独的WASM包');
|
||||
}
|
||||
|
||||
function showBuildResults() {
|
||||
|
||||
@@ -1,214 +0,0 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { execSync } = require('child_process');
|
||||
|
||||
console.log('🚀 构建 WASM 发布包...');
|
||||
|
||||
async function main() {
|
||||
try {
|
||||
// 构建通用版本
|
||||
console.log('🌐 构建通用 WASM 版本...');
|
||||
await buildUniversalVersion();
|
||||
|
||||
console.log('\n✅ WASM 发布包构建完成!');
|
||||
console.log('📦 输出目录: wasm-release/');
|
||||
console.log('💡 可以将整个目录打包为 zip 文件上传到 GitHub Release');
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 构建失败:', error.message);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
async function buildUniversalVersion() {
|
||||
// 确保通用 WASM 已构建
|
||||
if (!fs.existsSync('./bin/wasm')) {
|
||||
console.log('📦 构建通用 WASM...');
|
||||
execSync('npm run build:wasm', { stdio: 'inherit' });
|
||||
}
|
||||
|
||||
// 创建发布目录
|
||||
const releaseDir = './wasm-release';
|
||||
if (fs.existsSync(releaseDir)) {
|
||||
execSync(`rimraf ${releaseDir}`, { stdio: 'inherit' });
|
||||
}
|
||||
fs.mkdirSync(releaseDir);
|
||||
|
||||
// 复制 WASM 文件
|
||||
console.log('📁 复制 WASM 文件...');
|
||||
const wasmDir = './bin/wasm';
|
||||
fs.readdirSync(wasmDir).forEach(file => {
|
||||
if (file !== '.gitignore') {
|
||||
fs.copyFileSync(
|
||||
path.join(wasmDir, file),
|
||||
path.join(releaseDir, file)
|
||||
);
|
||||
console.log(` ✓ ${file}`);
|
||||
}
|
||||
});
|
||||
|
||||
// 生成包信息
|
||||
console.log('📋 生成包信息...');
|
||||
generatePackageInfo(releaseDir);
|
||||
|
||||
// 创建使用说明
|
||||
console.log('📋 生成使用说明...');
|
||||
generateUsageInstructions(releaseDir);
|
||||
|
||||
// 显示结果
|
||||
showReleaseResults(releaseDir);
|
||||
}
|
||||
|
||||
function generatePackageInfo(releaseDir) {
|
||||
const packageInfo = {
|
||||
name: "@esengine/ecs-framework-wasm",
|
||||
version: "1.0.0",
|
||||
description: "ECS Framework WASM 加速模块",
|
||||
main: "ecs_wasm_core.js",
|
||||
files: [
|
||||
"ecs_wasm_core.js",
|
||||
"ecs_wasm_core_bg.wasm",
|
||||
"*.d.ts",
|
||||
"README.md"
|
||||
],
|
||||
keywords: ["ecs", "wasm", "game-engine", "performance"],
|
||||
author: "ESEngine Team",
|
||||
license: "MIT",
|
||||
peerDependencies: {
|
||||
"@esengine/ecs-framework": "^1.0.0"
|
||||
}
|
||||
};
|
||||
|
||||
fs.writeFileSync(
|
||||
path.join(releaseDir, 'package.json'),
|
||||
JSON.stringify(packageInfo, null, 2)
|
||||
);
|
||||
}
|
||||
|
||||
function generateUsageInstructions(releaseDir) {
|
||||
const instructions = `# ECS Framework WASM 支持包
|
||||
|
||||
这个包包含了 @esengine/ecs-framework 的 WASM 加速模块。
|
||||
|
||||
## 包含文件
|
||||
|
||||
- \`ecs_wasm_core.js\` - WASM 胶水代码
|
||||
- \`ecs_wasm_core.d.ts\` - TypeScript 类型定义
|
||||
- \`ecs_wasm_core_bg.wasm\` - WASM 二进制文件
|
||||
- \`ecs_wasm_core_bg.wasm.d.ts\` - WASM 类型定义
|
||||
- \`package.json\` - 包信息
|
||||
|
||||
## 使用方法
|
||||
|
||||
### Node.js 环境
|
||||
|
||||
\`\`\`javascript
|
||||
import init, { EcsCore } from './ecs_wasm_core.js';
|
||||
|
||||
async function useWasm() {
|
||||
// 初始化 WASM 模块
|
||||
await init();
|
||||
|
||||
// 创建 ECS 核心实例
|
||||
const ecsCore = new EcsCore();
|
||||
|
||||
// 使用 WASM 加速的 ECS 功能
|
||||
const entity = ecsCore.create_entity();
|
||||
console.log('创建实体:', entity);
|
||||
}
|
||||
|
||||
useWasm();
|
||||
\`\`\`
|
||||
|
||||
### 浏览器环境
|
||||
|
||||
\`\`\`html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script type="module">
|
||||
import init, { EcsCore } from './ecs_wasm_core.js';
|
||||
|
||||
async function main() {
|
||||
await init();
|
||||
const ecsCore = new EcsCore();
|
||||
const entity = ecsCore.create_entity();
|
||||
console.log('Entity created:', entity);
|
||||
}
|
||||
|
||||
main();
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>ECS Framework WASM Demo</h1>
|
||||
</body>
|
||||
</html>
|
||||
\`\`\`
|
||||
|
||||
### TypeScript 支持
|
||||
|
||||
确保包含类型定义:
|
||||
|
||||
\`\`\`typescript
|
||||
import init, { EcsCore } from './ecs_wasm_core.js';
|
||||
|
||||
async function typedExample(): Promise<void> {
|
||||
await init();
|
||||
|
||||
const ecsCore = new EcsCore();
|
||||
const entityId: number = ecsCore.create_entity();
|
||||
|
||||
// 使用类型安全的 API
|
||||
const mask = BigInt(0b1010);
|
||||
ecsCore.update_entity_mask(entityId, mask);
|
||||
}
|
||||
\`\`\`
|
||||
|
||||
## 性能优势
|
||||
|
||||
WASM 模块主要优化以下操作:
|
||||
|
||||
- 🚀 实体查询(10-100x 性能提升)
|
||||
- 🔥 组件掩码操作
|
||||
- ⚡ 批量实体处理
|
||||
|
||||
## 兼容性
|
||||
|
||||
- **浏览器**: 支持 WebAssembly 的现代浏览器
|
||||
- **Node.js**: 16.0+ 版本
|
||||
- **TypeScript**: 4.0+ 版本
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT License - 详见 LICENSE 文件
|
||||
`;
|
||||
|
||||
fs.writeFileSync(path.join(releaseDir, 'README.md'), instructions);
|
||||
}
|
||||
|
||||
function showReleaseResults(releaseDir) {
|
||||
const files = fs.readdirSync(releaseDir);
|
||||
const totalSize = files.reduce((size, file) => {
|
||||
const filePath = path.join(releaseDir, file);
|
||||
const stats = fs.statSync(filePath);
|
||||
return size + stats.size;
|
||||
}, 0);
|
||||
|
||||
console.log(`\n📦 发布包内容 (${releaseDir}):`);
|
||||
files.forEach(file => {
|
||||
const filePath = path.join(releaseDir, file);
|
||||
const stats = fs.statSync(filePath);
|
||||
const sizeKB = (stats.size / 1024).toFixed(1);
|
||||
console.log(` ✓ ${file} (${sizeKB} KB)`);
|
||||
});
|
||||
|
||||
console.log(`\n📊 总计 ${files.length} 个文件,大小: ${(totalSize / 1024).toFixed(1)} KB`);
|
||||
}
|
||||
|
||||
if (require.main === module) {
|
||||
main();
|
||||
}
|
||||
|
||||
module.exports = { main };
|
||||
Reference in New Issue
Block a user