SG Com 计算资源使用情况
SG Com 在 CPU 上运行,对 GPU 没有影响。以下是内存、CPU 和功耗的测量值。
内存
典型的聊天用例包括一个用于处理本地麦克风输入的引擎和一个或多个用于计算本地或远程角色 Speech Graphics 动画控制器的播放器(请参阅引擎和播放器)。只有在构建和销毁引擎和播放器时才会分配和释放堆,其他函数不会触及堆。
代码 | 堆(每个引擎) | 堆(每个播放器) | 堆栈 |
~12 MB | ~12 MB | ~1.5 MB + (44 KB * b) 其中 b = 播放器缓冲长度(秒) | < 10 KB |
CPU
我们对引擎和播放器的两个高频函数进行了速度测量:
SG_COM_ProcessTick(引擎)。该函数每秒调用 100 次,以 10 毫秒的数据块为单位处理音频输入,下面的测量值是处理 1 个数据块所需的时间。
SG_COM_UpdateAnimation(播放器)。该函数根据应用的帧率调用,以计算输出动画通道的值,下面的测量值是处理 1 帧所需的时间。
对于 SG_COM_UpdateAnimation,处理时间取决于角色骨骼控制的复杂程度和类型。我们考虑了两个骨骼控制的样本:
骨骼控制 1 是一个骨骼装备,有 82 个设置动画控制器的骨骼
骨骼控制 2 是一个 Epic MetaHuman,有 252 个设置动画控制器的标量通道(和一些骨骼)
Windows | Linux | MacOS | iOS/Android | XBox X | PS5 | |
处理器 | Intel Xeon E5-4620 | Intel Xeon Silver 4114 | Intel Xeon E5-1650 | ARM v8 Cortex-A72 | AMD Zen 2 | AMD Zen 2 |
速度 (GHz) | 2.2 | 2.2 | 3.5 | 1.8 | 3.66 | 3.5 |
一次帧处理时间(毫秒) | 0.695 | 0.673 | 0.374 | 0.816 | 0.357 | 0.171 |
更新 - 骨骼控制 1(毫秒) | 0.187 | 0.183 | 0.0884 | 0.522 | 0.0981 | 0.0797 |
更新 - 骨骼控制 2(毫秒) | 0.0923 | 0.0823 | 0.0422 | 0.251 | 0.0357 | 0.0202 |
内存到 CPU 的带宽通常是性能的限制因素,受整个系统中缓存大小和内存使用模式的影响。为获得最佳效果,调用 SG_COM_ProcessTick 的线程应尽可能固定核心亲和性。
移动功耗
SG Com 针对移动功耗进行了优化,大部分计算都使用整数运算。电流功耗估计值基于将设备放电至指定容量的 90% 与闲置控制器的情况的相比所花费的时间。请注意,这里不包括 3D 渲染的功耗。
Galaxy S20 Ultra 5G | |
功耗 (mA) | ~115 |