У меня есть 2 двумерных NSMutableArrays, и я пытаюсь сделать некоторое базовое умножение матрицы. У меня есть общий код формулы ниже, но его производительность исключительно медленная (как и ожидалось). Я сделал много поисковых запросов и не нашел простых и понятных формул для изменения кода для повышения производительности. Может кто-нибудь мне точку в правильном направлении простой формулы/учебник/пример того, как получить лучшую производительность, чем 0 (п^3) с матричным умножением в Objective C.Цель C - Матричное умножение Медленная производительность
+ (NSMutableArray*)multiply:(NSMutableArray*)a1 withArray:(NSMutableArray*)a2
{
if([[a1 objectAtIndex: 0] count] != [a2 count])
{
NSLog(@"Multiplicaton error!");
return NULL;
}
int a1_rowNum = [a1 count];
int a2_rowNum = [a2 count];
int a2_colNum = [[a2 objectAtIndex:0] count];
NSMutableArray *result = [NSMutableArray arrayWithCapacity:a1_rowNum];
for (int i = 0; i < a1_rowNum; i++) {
NSMutableArray *tempRow = [NSMutableArray arrayWithCapacity:a2_colNum];
for (int j = 0; j < a2_colNum; j++) {
double tempTotal = 0;
for (int k = 0; k < a2_rowNum; k++) {
double temp1 = [[[a1 objectAtIndex:i] objectAtIndex:k] doubleValue];
double temp2 = [[[a2 objectAtIndex:k] objectAtIndex:j] doubleValue];
tempTotal += temp1 * temp2;
}
//Stored as a string because I upload it to an online database for storage.
[tempRow addObject:[NSString stringWithFormat:@"%f",tempTotal]];
}
[result addObject:tempRow];
}
return result;
}
Проверили вы ли версия C работать лучше? И насколько большими (размерностью) являются 2 матрицы? – nhahtdh
Массивы находятся вокруг 50-200 на 50-200. – MrHappyAsthma