【发布时间】:2011-09-19 18:10:19
【问题描述】:
这个 Java 代码能否被翻译成同样快或几乎同样快的 Clojure 代码?
我已经能够获得更简单的函数,例如添加两个数组以通过类型提示以合理的速度运行,但我无法让 Clojure 在合理的时间内使用任何一种 Java 来完成下面的函数interop 或 Incanter 矩阵,并使用函数式或命令式样式。
我是否遗漏了一些关于类型提示的内容,还是最好在 Java 中做这种事情?
static double[][] grad2_stencil= { {0,0,-1,0,0},
{0,0,16,0,0},
{-1,16,-60,16,-1},
{0,0,16,0,0},
{0,0,-1,0,0} };
public static double grad2(double[][] array, int x, int y){
double temp=0;
int L=array.length;
for(int i=0; i<5; i++){
for(int j=0; j<5; j++){
temp+=array[((x+i-2)%L+L)%L][((y+j-2)%L+L)%L]*grad2_stencil[i][j];
}
}
return temp/12.0;
}
public static double[][] grad2_field(double[][] arr){
int L=arr.length;
double[][] result=new double[L][L];
for(int i=0; i<L; i++){
for(int j=0; j<L; j++){
result[i][j]=grad2(arr, i, j);
}
}
return result;
}
【问题讨论】:
标签: clojure