itu*_*tun 0 c++ directx performance xna-math-library
我用这个代码:
MainLoop() {
for (int i = 0; i < length; i++) {
XMVector3Rotate(rays[i], orientation);
}
}
Run Code Online (Sandbox Code Playgroud)
我有fps 1900000,但当我用这个:
MainLoop() {
for (int i = 0; i < length; i++) {
calculatedRays[i] = XMVector3Rotate(rays[i], orientation);
}
}
Run Code Online (Sandbox Code Playgroud)
我有fps = 200.为什么?
当你这样做:
XMVector3Rotate(rays[i], orientation);
Run Code Online (Sandbox Code Playgroud)
我猜测编译器内联函数 - 并且看到它,因为它的结果从未在任何地方被赋值 - 它实际上没有做任何事情,并完全删除了函数调用.它非常快,因为它实际上并没有做任何事情.
但是当你添加作业时:
calculatedRays[i] = XMVector3Rotate(rays[i], orientation);
Run Code Online (Sandbox Code Playgroud)
突然之间,你正在进行大量的内存读写和各种数学操作 - 所有这些操作都被忽略了.
(你已经标记了这个XNA - 但这是一个C++函数.大多数C++编译器可以并且将内联这样的函数.标准的C#编译器不能.)
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |