我想在 ILNumerics C# 中分配一个未初始化为任何值的数组。我知道我将覆盖数组中的每个条目,因此不需要对其进行初始化。这将有助于计算密集型任务。
我是否需要深入 ILMemoryPool 才能做到这一点?如果有一个提供此功能的标准数组构造函数会很好,但我一直找不到它。
谢谢,埃里克
我想在 ILNumerics C# 中分配一个未初始化为任何值的数组。我知道我将覆盖数组中的每个条目,因此不需要对其进行初始化。这将有助于计算密集型任务。
我是否需要深入 ILMemoryPool 才能做到这一点?如果有一个提供此功能的标准数组构造函数会很好,但我一直找不到它。
谢谢,埃里克
你是对的,内存必须来自内存池。但是有一个包装器 'ILMath.New(int)' 以某种方式简化了访问:
double[] mem = ILMath.New<double>(1000000);
ILArray<double> A = ILMath.array(mem, ILMath.size(1000,1000));
请记住,如果您正在使用内存中的内存,则ILArray<T>
不需要手动跟踪它。一旦 ILArray 超出范围,它会自动释放并返回到池中。
相反,如果您需要 System.Array 进行其他直接计算,则 ILNumerics 内存管理无济于事,您需要事后手动将内存还给池:
ILMath.free(mem);