我一直在重构一次性代码,这是我几年前以类似FORTRAN的方式编写的.大多数代码现在更加有条理和可读.然而,算法的核心(性能关键)使用1维和2维Java数组,其典型代表是:
for (int j = 1; j < len[1]+1; j++) {
int jj = (cont == BY_TYPE) ? seq[1][j-1] : j-1;
for (int i = 1; i < len[0]+1; i++) {
matrix[i][j] = matrix[i-1][j] + gap;
double m = matrix[i][j-1] + gap;
if (m > matrix[i][j]) {
matrix[i][j] = m;
pointers[i][j] = UP;
}
//...
}
}
Run Code Online (Sandbox Code Playgroud)
为清楚起见,可维护性以及与其余代码的接口,我想重构它.但是,在阅读用于数组和 Java Generics的Java Generics语法和数字时,我有以下问题:
性能.该代码计划使用大约10 ^ 8 - 10 ^ 9秒/年,这几乎是可管理的.我的阅读建议将double变为Double有时可以在性能上增加3倍.我想要其他经验.我也希望从foo []移动到List也会受到影响.我没有第一手的知识,经验也很有用.
数组绑定检查.这在double []和List中有不同的处理方式吗?我期望一些问题违反界限,因为算法相当简单并且仅应用于少数数据集.
如果我不重构那么代码就有两种方法的丑陋且可能是脆弱的混合.我已经在尝试写下这样的东西:
List <double []>和List …