我用两种方法编写了两个移动应用程序来测试执行时间。 这两个应用程序只包含一个调用矩阵乘法方法的按钮:
Java方法:
public void matrismult(int[][] a, int[][] b)
{
int n = a.length;
int[][] C = new int[n][n];
for (int i = 0; i < n; i++) {
for (int k = 0; k < n; k++) {
for (int j = 0; j < n; j++) {
C[i][j] += a[i][k] * b[k][j];
}
}
}
}
在java方法中我使用System.currentTimeMillis();测量执行时间,在JavaScript中我使用performance.now();
JavaScript方法:
function myFunction(m1,m2) {
for (var i = 0; i < m1.length; i++) {
result[i] = [];
for (var j = 0; j < m2[0].length; j++) {
var sum = 0;
for (var k = 0; k < m1[0].length; k++) {
sum += m1[i][k] * m2[k][j];
}
result[i][j] = sum;
}
}
}
当我在10x10矩阵上运行10k次矩阵乘法时,Java方法的执行时间是6500毫秒。当我在PhoneGap应用程序上执行相同操作时,执行时间为139毫秒。
我确定我做的事情非常糟糕,因为感觉Android应用程序不应该那么慢。但我真的不知道什么,有人能指出我正确的方向吗?
编辑:矩阵是相同的
edit2:我如何衡量执行时间
long starttime = System.currentTimeMillis();
for (int i = 0; i < 10000; i++)
dostuff();
long endtime = System.currentTimeMillis();
long exec = endtime - starttime;