Performance 围绕SharpDX Vector结构包装Vector类-性能?
我在使用Vector3类时遇到了一些问题,主要是因为它是一个结构,另外,当组件发生更改时,它不会引发类似事件的事件 最后,我希望能够编写Performance 围绕SharpDX Vector结构包装Vector类-性能?,performance,vector,struct,sharpdx,Performance,Vector,Struct,Sharpdx,我在使用Vector3类时遇到了一些问题,主要是因为它是一个结构,另外,当组件发生更改时,它不会引发类似事件的事件 最后,我希望能够编写\u camera.Position.Z+=0.1f 对于SharpDX.Vector3,这是不可能的,因为它是一个结构,我无法修改它的组件(因为调用\u camera.Position时会返回一个副本) 此外,没有类似于ComponentsChanged的事件,例如,我会更新相机视图矩阵 我决定围绕Vector3结构创建一个包装器类,它也提供这样一个事件。由于
\u camera.Position.Z+=0.1f代码>
对于SharpDX.Vector3
,这是不可能的,因为它是一个结构,我无法修改它的组件(因为调用\u camera.Position
时会返回一个副本)
此外,没有类似于ComponentsChanged
的事件,例如,我会更新相机视图矩阵
我决定围绕Vector3结构创建一个包装器类,它也提供这样一个事件。由于调用\u camera.Position
会返回一个引用,因此我还可以直接修改Z
组件
但是,出于性能原因,我怀疑这是否是一个好主意
- 将向量3移动到类中真的很好吗
- 每次Vector3组件发生更改时引发事件是否不好(即使没有/一个/更少的订阅者)
使用存储向量的结构是正确的格式,因为它在空间和映射上直接比原始C++的预期/返回的原生格式更有效。p>
因此,在结构上的每个组件更改上引发事件是不好且不常见的。结构是轻量级数据,节省空间,对于D3D,用于本机互操作。事件通常在持有值类型的类(例如camera component)上引发。这是一个在.NET中普遍有效的建议,在整个.NET框架中广泛使用