@echo off REM ================================================================================================ REM Audio Backend - 性能测试运行脚本 (Windows) REM ================================================================================================ REM 描述: 运行项目中的所有性能基准测试 REM ================================================================================================ setlocal EnableDelayedExpansion REM 设置颜色输出 set "GREEN=[92m" set "RED=[91m" set "YELLOW=[93m" set "BLUE=[94m" set "NC=[0m" REM 脚本所在的目录路径 set "SCRIPT_DIR=%~dp0" REM 项目根目录 for %%i in ("%SCRIPT_DIR%\..\..\..\") do set "ROOT_DIR=%%~fi" REM 构建目录 set "BUILD_DIR=%ROOT_DIR%\build" REM 测试结果目录 set "TEST_RESULTS_DIR=%ROOT_DIR%\test-results" REM 性能测试结果目录 set "PERFORMANCE_TEST_RESULTS_DIR=%TEST_RESULTS_DIR%\performance" REM 测试可执行文件目录 set "TEST_BIN_DIR=%BUILD_DIR%\bin\tests" REM 打印脚本信息 echo %BLUE%=========================================================%NC% echo %BLUE% 音频后端性能测试运行脚本 %NC% echo %BLUE%=========================================================%NC% echo %YELLOW%项目根目录: %ROOT_DIR%%NC% echo %YELLOW%测试结果目录: %PERFORMANCE_TEST_RESULTS_DIR%%NC% echo. REM 确保测试结果目录存在 if not exist "%PERFORMANCE_TEST_RESULTS_DIR%" mkdir "%PERFORMANCE_TEST_RESULTS_DIR%" REM 检查测试目录是否存在 if not exist "%TEST_BIN_DIR%" ( echo %RED%错误: 测试可执行文件目录不存在。请先构建项目。%NC% exit /b 1 ) REM 收集所有性能测试可执行文件 set "PERFORMANCE_TEST_COUNT=0" set "PERFORMANCE_TESTS=" if exist "%TEST_BIN_DIR%\integration\performance_benchmark_test.exe" ( set /a PERFORMANCE_TEST_COUNT+=1 set "PERFORMANCE_TESTS=%TEST_BIN_DIR%\integration\performance_benchmark_test.exe" ) REM 如果没有找到性能测试,显示警告并退出 if %PERFORMANCE_TEST_COUNT% equ 0 ( echo %YELLOW%警告: 未找到性能测试可执行文件。%NC% exit /b 0 ) echo %BLUE%找到 %PERFORMANCE_TEST_COUNT% 个性能测试%NC% echo. REM 准备性能测试环境 echo %BLUE%准备性能测试环境...%NC% REM 检查系统资源 echo 检查系统资源... wmic cpu get NumberOfCores,NumberOfLogicalProcessors wmic OS get FreePhysicalMemory,TotalVisibleMemorySize REM 优化系统性能 echo 优化系统性能... REM 设置电源计划为高性能(需要管理员权限) powercfg /list | findstr "高性能" > nul if %ERRORLEVEL% equ 0 ( echo 尝试设置高性能电源计划... powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c > nul 2>&1 if %ERRORLEVEL% equ 0 ( echo 已设置高性能电源计划 ) else ( echo %YELLOW%无法设置高性能电源计划,可能需要管理员权限%NC% ) ) else ( echo %YELLOW%未找到高性能电源计划%NC% ) echo %GREEN%性能测试环境准备完成%NC% echo. REM 运行所有性能测试 set "PASSED_TESTS=0" set "FAILED_TESTS=0" set "TOTAL_TESTS=0" echo %BLUE%运行性能测试: performance_benchmark_test%NC% echo 开始时间: %TIME% REM 创建结果目录 if not exist "%PERFORMANCE_TEST_RESULTS_DIR%" mkdir "%PERFORMANCE_TEST_RESULTS_DIR%" REM 运行测试并保存结果 set "test_name=performance_benchmark_test" set "json_output=%PERFORMANCE_TEST_RESULTS_DIR%\%test_name%_result.json" set "text_output=%PERFORMANCE_TEST_RESULTS_DIR%\%test_name%_result.txt" REM 运行测试 echo 运行中,请耐心等待... "%PERFORMANCE_TESTS%" --gtest_output=json:"%json_output%" > "%text_output%" 2>&1 REM 检查测试结果 if %ERRORLEVEL% equ 0 ( echo %GREEN%测试通过: %test_name%%NC% set /a PASSED_TESTS+=1 ) else ( echo %RED%测试失败: %test_name% (退出码: %ERRORLEVEL%)%NC% set /a FAILED_TESTS+=1 ) set /a TOTAL_TESTS+=1 echo 完成时间: %TIME% echo. REM 解析性能数据并生成报告 echo %BLUE%生成性能报告...%NC% REM 提取关键性能指标 set "PERFORMANCE_SUMMARY=%PERFORMANCE_TEST_RESULTS_DIR%\performance_summary.txt" findstr /C:"平均延迟:" "%text_output%" > "%PERFORMANCE_SUMMARY%" findstr /C:"每秒缓冲区数:" "%text_output%" >> "%PERFORMANCE_SUMMARY%" findstr /C:"CPU使用率:" "%text_output%" >> "%PERFORMANCE_SUMMARY%" findstr /C:"内存使用:" "%text_output%" >> "%PERFORMANCE_SUMMARY%" REM 生成简单的HTML报告 set "HTML_REPORT=%PERFORMANCE_TEST_RESULTS_DIR%\performance_test_report.html" ( echo ^ echo ^ echo ^ echo ^ echo ^音频后端性能测试报告^ echo ^ echo body { font-family: Arial, sans-serif; margin: 20px; } echo h1, h2 { color: #333; } echo .summary { margin-bottom: 20px; } echo .pass { color: green; } echo .fail { color: red; } echo .warning { color: orange; } echo table { border-collapse: collapse; width: 100%%; margin-bottom: 20px; } echo th, td { border: 1px solid #ddd; padding: 8px; text-align: left; } echo th { background-color: #f2f2f2; } echo tr:nth-child(even) { background-color: #f9f9f9; } echo pre { background-color: #f5f5f5; padding: 10px; border-radius: 5px; } echo ^ echo ^ echo ^ echo ^音频后端性能测试报告^ echo ^
echo ^总测试数: ^%TOTAL_TESTS%^^ echo ^通过: ^%PASSED_TESTS%^^ echo ^失败: ^%FAILED_TESTS%^^ echo ^ echo ^测试详情^ echo ^ echo ^ echo ^测试名称^ echo ^结果^ echo ^详情链接^ echo ^ ) > "%HTML_REPORT%" REM 检查输出是否存在以确定测试是否成功运行 if exist "%text_output%" ( REM 检查是否有失败信息 findstr /C:"FAILED" "%text_output%" > nul if %ERRORLEVEL% equ 0 ( set "result=失败" set "result_class=fail" ) else ( set "result=通过" set "result_class=pass" ) ) else ( set "result=错误" set "result_class=fail" ) REM 添加到HTML表格 ( echo ^ echo ^performance_benchmark_test^ echo ^%result%^ echo ^^详细日志^^ echo ^ echo ^ echo ^性能指标摘要^ echo ^ ) >> "%HTML_REPORT%" REM 添加性能摘要到HTML报告 if exist "%PERFORMANCE_SUMMARY%" ( type "%PERFORMANCE_SUMMARY%" >> "%HTML_REPORT%" ) else ( echo 无法提取性能指标数据。请查看详细日志了解更多信息。 >> "%HTML_REPORT%" ) REM 完成HTML报告 ( echo ^ echo ^系统环境^ echo ^ wmic cpu get Name,NumberOfCores,NumberOfLogicalProcessors echo. wmic OS get Caption,OSArchitecture,Version echo. wmic OS get FreePhysicalMemory,TotalVisibleMemorySize echo ^ echo ^报告生成时间: %DATE% %TIME%^ echo ^ echo ^ ) >> "%HTML_REPORT%" echo %BLUE%=========================================================%NC% echo %BLUE% 性能测试结果汇总 %NC% echo %BLUE%=========================================================%NC% echo 总测试数: %TOTAL_TESTS% echo 通过: %GREEN%%PASSED_TESTS%%NC% echo 失败: %RED%%FAILED_TESTS%%NC% echo. echo 详细报告已生成到: %YELLOW%%HTML_REPORT%%NC% echo. REM 返回测试结果 if %FAILED_TESTS% equ 0 ( echo %GREEN%所有性能测试通过!%NC% exit /b 0 ) else ( echo %RED%有性能测试失败!%NC% exit /b 1 )