我正在研究一种优化算法,需要将一些数据(由算法生成)存储在一个名为的二维数组中matrix
,其中row(i)包含适应度得分和优化矢量(i)的参数值。
Dim matrix(vectorCount() - 1, parameterCount()) As Double
Dim params(parameterCount() - 1) As Double
For i As Integer = 0 To vectorCount() - 1
matrix(i, 0) = vectorScore(i)
params = vectorValues(i)
For j As Integer = 0 To params.Length - 1
matrix(i, j+1) = params(j)
Next
Next
intvectorCount()
返回向量的数量。
intparameterCount()
返回每个向量中的参数数量。
double vectorScore(
intvectorIndex)
返回指定向量的适应度得分。
double [] vectorValues(
intvectorIndex)
返回指定向量的参数值。
我的问题:
是否有快速的(即更有效)的方式插入params
到matrix
?
如果您想提高效率,那么毫无疑问,依靠“纯”数组是最好的选择。它们相对于其他选择(集合,列表等)如此高效的原因是,因为它们包含所需的最少信息量。如果您希望使用高级功能来轻松/快速地对信息进行排序,或者编写复杂的查询来检索数据,则不应依赖数组。
我一直都依赖于您编写的代码,并且从未遇到速度问题(这确实非常快)。我进行了快速研究,以确保没有其他选择,但找不到任何选择。您拥有的最接近的东西是Array.Copy
,尽管它仅在数组具有相同的尺寸时才起作用(我个人而言,仅将其与一维数组一起使用)。无论如何,我发现了一个有趣的链接,关于Array.Copy()与2D数组的循环性能(在C#中,但所有内容都适用于VB.NET)。
简介:您的代码确实非常快,不需要改进。如果有一个有效的替代方案(Array.Copy适用于2D和1D,不存在),则性能会好一点(并且仅适用于较小的阵列)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句