VS2019 16.2: 新版本对游戏性能的优化( 六 )

之前的FMA代码生成只能适用于本地的vetor , 现在也可以支持全局的vector了 。

下面是两个优化的例子:

Memset和初始化

开发团队还优化了对memset的代码生成 , 具体来说就是将内联展开方式转换为调用更加优化版本的CRT调用 。 在循环中以相同字节的方式(例如 0xABABABAB)来保存一个常量也将使用CRT版本的memset 。 对比本机代码生成 , 在开启了SSE2开关下 , 调用memset的性能提升将至少快2倍 , 在AVX2下还会更快 。

内联

通过对内联的探索 , 编译器对包含有控制流的小函数进行了更加激进的内联 。

在虚幻引擎中的优化 – Infiltrator示例

Infiltrator基于虚幻引擎 , 下面的例子使用Infiltrator来模拟真实世界的一款游戏 。

游戏的性能通过测试帧率来衡量 , 帧的渲染耗时越短 , 则表示帧率越高 , 也即性能更好 。 以下的测试基于AMD Zen 2的新款CPU 。

推荐阅读