245 lines
8.0 KiB
Batchfile
245 lines
8.0 KiB
Batchfile
@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 ^<!DOCTYPE html^>
|
|
echo ^<html^>
|
|
echo ^<head^>
|
|
echo ^<meta charset="UTF-8"^>
|
|
echo ^<title^>音频后端性能测试报告^</title^>
|
|
echo ^<style^>
|
|
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 ^</style^>
|
|
echo ^</head^>
|
|
echo ^<body^>
|
|
echo ^<h1^>音频后端性能测试报告^</h1^>
|
|
echo ^<div class="summary"^>
|
|
echo ^<p^>总测试数: ^<strong^>%TOTAL_TESTS%^</strong^>^</p^>
|
|
echo ^<p^>通过: ^<strong class="pass"^>%PASSED_TESTS%^</strong^>^</p^>
|
|
echo ^<p^>失败: ^<strong class="fail"^>%FAILED_TESTS%^</strong^>^</p^>
|
|
echo ^</div^>
|
|
|
|
echo ^<h2^>测试详情^</h2^>
|
|
echo ^<table^>
|
|
echo ^<tr^>
|
|
echo ^<th^>测试名称^</th^>
|
|
echo ^<th^>结果^</th^>
|
|
echo ^<th^>详情链接^</th^>
|
|
echo ^</tr^>
|
|
) > "%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 ^<tr^>
|
|
echo ^<td^>performance_benchmark_test^</td^>
|
|
echo ^<td class="%result_class%"^>%result%^</td^>
|
|
echo ^<td^>^<a href="performance_benchmark_test_result.txt"^>详细日志^</a^>^</td^>
|
|
echo ^</tr^>
|
|
echo ^</table^>
|
|
|
|
echo ^<h2^>性能指标摘要^</h2^>
|
|
echo ^<pre^>
|
|
) >> "%HTML_REPORT%"
|
|
|
|
REM 添加性能摘要到HTML报告
|
|
if exist "%PERFORMANCE_SUMMARY%" (
|
|
type "%PERFORMANCE_SUMMARY%" >> "%HTML_REPORT%"
|
|
) else (
|
|
echo 无法提取性能指标数据。请查看详细日志了解更多信息。 >> "%HTML_REPORT%"
|
|
)
|
|
|
|
REM 完成HTML报告
|
|
(
|
|
echo ^</pre^>
|
|
|
|
echo ^<h2^>系统环境^</h2^>
|
|
echo ^<pre^>
|
|
wmic cpu get Name,NumberOfCores,NumberOfLogicalProcessors
|
|
echo.
|
|
wmic OS get Caption,OSArchitecture,Version
|
|
echo.
|
|
wmic OS get FreePhysicalMemory,TotalVisibleMemorySize
|
|
echo ^</pre^>
|
|
|
|
echo ^<p^>报告生成时间: %DATE% %TIME%^</p^>
|
|
echo ^</body^>
|
|
echo ^</html^>
|
|
) >> "%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
|
|
) |