避免在c#上进行小堆分配

时间:2018-02-07 16:05:28

标签: c# arrays memory-management bridge.net

我目前正在使用Bridge.Net编译器执行代码C#代码,这些编译器可以使用点,线和方块进行大量工作,这意味着我经常处理一对或四个整数或浮点数。

我想知道,在C#中代表他们的最佳方式是什么?

- 我不想使用元组,因为我希望能够遍历上下文。我不认为我可以使用任何高级反射技巧,因为我编译为Javascript,即使我可以,它们也不值得。

- 为这个常见问题定义我自己的结构似乎是一个荒谬的代码密集型解决方案。

- 我不想unsafe,因此fixedstackalloc关键字无可争议。

目前,我只使用reqular数组,如下所示:

//calculates meeting point of two lines
public static int[] MeetingPoint(int[,] a, int[,] b)
{   //...
}

但这意味着很多堆分配,通常是常用的低级代码。对我来说似乎很浪费。在C / C ++ / D中,我会使用静态数组,但在C#中,除非去unsafe,否则不会有这样的事情。

问题是,是否有一些库类型,最好是在标准库中?或者我是否只需要设计一些大的预分配数组,这些数组会将我的小数据存储在批量中?

编辑:大数组无论如何都是一个糟糕的解决方案,因为即使在处理它们时它们仍然会在堆中。

0 个答案:

没有答案