我正在努力确定为什么我的Strassen实现如此缓慢.它会在每次迭代时分配内存,但我会在适当时释放它们.
int** multiply(int** a, int** b, int size)
{
int row,col,i,j;
if(size == 1)
{
int** c = allocate(size);
c[0][0] = (a[0][0] * b[0][0])%2;
return c;
}
if(size <= 2)
{
int a11,a12,a21,a22,b11,b12,b21,b22;
int** c = allocate(size);
a11 = a[0][0];
a12 = a[0][1];
a21 = a[1][0];
a22 = a[1][1];
b11 = b[0][0];
b12 = b[0][1];
b21 = b[1][0];
b22 = b[1][1];
c[0][0] = (a11*b11 + a12*b21)%2;
c[0][1] = (a11*b12 + a12*b22)%2;
c[1][0] = (a21*b11 + a22*b21)%2;
c[1][1] = (a21*b12 + …Run Code Online (Sandbox Code Playgroud)