从API版本26.0.0版本开始,新增支持perfHint系统性能优化特性。
perfHint(Performance Hint)是系统性能优化的简称,用于向系统提供性能场景信息。
允许应用程序向系统提供性能场景信息,系统据此在API生效范围内尽可能优化应用性能,以提升用户体验。
支持多种场景上报,包括应用启动、页面切换、页面加载、网络文件处理、本地文件处理、页面绘制、动效、音视频播放与媒体编解码。
场景状态控制:场景开始和场景结束。
持续时间提示:短持续时间、中等持续时间和长持续时间。支持不同的间隔要求,以提高策略差异化。各类型界定标准如下:
支持同时上报多个线程。可以携带线程ID数组。
perfHint系统性能优化场景提供以下C接口,具体API说明详见接口文档。
| 接口名 | 描述 |
|---|---|
| HMS_FAST_PerfHintConfigBuilder_Create | 创建构建器实例。 |
| HMS_FAST_PerfHintConfigBuilder_Destroy | 销毁构建器。 |
| HMS_FAST_PerfHintConfigBuilder_SetSceneType | 设置需要系统性能优化的场景类型。 |
| HMS_FAST_PerfHintConfigBuilder_SetSceneState | 设置需要系统性能优化的场景状态。 |
| HMS_FAST_PerfHintConfigBuilder_SetDurationType | 设置需要系统性能优化的持续时间选项。 |
| HMS_FAST_PerfHintConfigBuilder_SetTids | 设置需要优化QoS的线程ID。 |
| HMS_FAST_PerfHintConfigBuilder_Build | 创建系统性能优化配置参数。 |
| HMS_FAST_PerfHintConfig_Destroy | 销毁系统性能优化配置参数。 |
| HMS_FAST_SchedulingOptimization_PerfHint | 系统性能优化接口,允许应用程序向系统提供性能场景信息,系统据此在API生效范围内尽可能优化应用性能,以提升用户体验。 |
find_library(
lib_scheduling_optimization
NAMES scheduling_optimization.z
)
target_link_libraries(entry PRIVATE ${lib_scheduling_optimization}) 需要开发者引入scheduling_optimization.h头文件后,才可以使用系统性能优化相关API。
#include "FASTKit/scheduling_optimization.h"
应用可以通过HMS_FAST_SchedulingOptimization_PerfHint接口进行系统性能优化。
#include <iostream>
#include "FASTKit/scheduling_optimization.h"
void demoSchedulingOptimization()
{
HMS_FAST_PerfHintConfigBuilder* builder = nullptr;
HMS_FAST_PerfHintConfig* config = nullptr;
HMS_FAST_SchedulingOptimization_ErrorCode ret;
int tids[] = {1001, 1002};
// 创建构建器
ret = HMS_FAST_PerfHintConfigBuilder_Create(&builder);
if (ret != HMS_FAST_ERR_SCHEDULING_OPTIMIZATION_SUCCESS) {
std::cerr << "Failed to create builder, error: " << ret << std::endl;
return;
}
// 设置场景类型
ret = HMS_FAST_PerfHintConfigBuilder_SetSceneType(builder, HMS_FAST_APP_LAUNCH);
if (ret != HMS_FAST_ERR_SCHEDULING_OPTIMIZATION_SUCCESS) {
std::cerr << "Failed to set scene type, error: " << ret << std::endl;
goto cleanup;
}
// 设置场景状态
ret = HMS_FAST_PerfHintConfigBuilder_SetSceneState(builder, HMS_FAST_BEGIN);
if (ret != HMS_FAST_ERR_SCHEDULING_OPTIMIZATION_SUCCESS) {
std::cerr << "Failed to set scene state, error: " << ret << std::endl;
goto cleanup;
}
// 设置持续时间类型
ret = HMS_FAST_PerfHintConfigBuilder_SetDurationType(builder, HMS_FAST_SHORT);
if (ret != HMS_FAST_ERR_SCHEDULING_OPTIMIZATION_SUCCESS) {
std::cerr << "Failed to set duration type, error: " << ret << std::endl;
goto cleanup;
}
// 设置线程ID(可选)
ret = HMS_FAST_PerfHintConfigBuilder_SetTids(builder, tids, 2);
if (ret != HMS_FAST_ERR_SCHEDULING_OPTIMIZATION_SUCCESS) {
std::cerr << "Failed to set tids, error: " << ret << std::endl;
goto cleanup;
}
// 构建配置参数
ret = HMS_FAST_PerfHintConfigBuilder_Build(builder, &config);
if (ret != HMS_FAST_ERR_SCHEDULING_OPTIMIZATION_SUCCESS) {
std::cerr << "Failed to build config, error: " << ret << std::endl;
goto cleanup;
}
// 执行系统性能优化
ret = HMS_FAST_SchedulingOptimization_PerfHint(config);
if (ret == HMS_FAST_ERR_SCHEDULING_OPTIMIZATION_SUCCESS) {
std::cout << "Scheduling optimization performed successfully" << std::endl;
} else {
std::cerr << "Failed to perform scheduling optimization, error: " << ret << std::endl;
}
cleanup:
// 销毁配置参数
if (config) {
HMS_FAST_PerfHintConfig_Destroy(config);
}
// 销毁构建器
if (builder) {
HMS_FAST_PerfHintConfigBuilder_Destroy(builder);
}
}