@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 ^总测试数: ^%TOTAL_TESTS%^^
echo ^通过: ^%PASSED_TESTS%^^
echo ^失败: ^%FAILED_TESTS%^^
echo ^| 测试名称^ | echo ^结果^ | echo ^详情链接^ | echo ^
|---|---|---|
| performance_benchmark_test^ | echo ^%result%^ | echo ^^详细日志^^ | echo ^
) >> "%HTML_REPORT%"
REM 添加性能摘要到HTML报告
if exist "%PERFORMANCE_SUMMARY%" (
type "%PERFORMANCE_SUMMARY%" >> "%HTML_REPORT%"
) else (
echo 无法提取性能指标数据。请查看详细日志了解更多信息。 >> "%HTML_REPORT%"
)
REM 完成HTML报告
(
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 )