【发布时间】:2014-12-03 04:47:22
【问题描述】:
假设我有以下代码
public static class Main
{
public struct Vec3
{
public float x, y, z;
}
public void Entry()
{
float[9] floats = new floats[9] { 1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f };
Vec3[3] vecs;
}
}
我想将 float[] 转换为 Vec3[]。
有没有办法用 Marshaling 来做到这一点,这样所需的复制会比迭代 float[] 并将每个 float 复制到 Vec3[] 更快?假设 float[] 非常大。
【问题讨论】:
-
您的
Vec3实际上不仅仅是内存中的 3 个浮点数。有关对象本身的信息也存储在那里。这就是为什么我认为不可能做到这一点,但如果有人证明我错了,我会很高兴。 -
我相信 c# 结构可以以允许将它们传递给 c++ API 函数的方式进行编组,因此这应该不是问题。
标签: c# arrays performance marshalling