Я пытаюсь написать программу калькулятора датчиков, и я хотел бы услышать от вас, ребята, как я могу улучшить время выполнения моей программы?Поиск самого быстрого способа вычисления больших матриц и вывода их?
Вкратце калькулятор датчиков представляет собой программу, которая выполняет умножение матрицы. Он мог получать 50 000 матриц в секунду. Первичное задание калькулятора датчиков - это получение матриц и вычисление их с помощью одной из 5 матриц, которые уже хранятся в программе.
Калькулятор датчиков имеет 5 методов, и каждый метод имеет собственную матрицу, которая умножается на полученную матрицу (параметр). И, конечно же, они возвращают полученную матрицу.
- У меня есть полностью 50 000 виртуальных цензоров на разных компьютерах.
- Каждый датчик отправляет каждую вторую матрицу в калькулятор (сервер) с UDP.
- Сервер, на котором размещается калькулятор датчика, получают матрицу и вычисляют ее.
- Сервер отправит результат на датчик (клиент) с UDP.
Все матрицы размером 10x10.
Например, первый метод:
public int[10][10] calculateWind(int[10][10] A){
int[10][10] C = new int[10][10]; //
for (int i = 0; i < 10; i++) { // Row
for (int j = 0; j < 10; j++) { // Column
for (int k = 0; k < 10; k++) { // Column
C[i][j] += A[i][k] * B[k][j];//B is constant matrix(private attribute)
}
}
}
return C;}
Я использую Java, но кто-то сказал мне, что я мог бы использовать FORTRAN & C с Java, и это может помочь?
Я пытаюсь найти самый быстрый способ. Скажите мне, ребята, все, что вы думаете, что может помочь моей программе улучшить ее производительность. Изменение языка программирования? Использование уникального алгоритма?
Все советы приветствуются, за исключением использования ASSEMBLY и благодарности за ваш совет.
Вы можете передать матрицу из Java в код C или Fortran через интерфейс Java Native Interface, JNI, как указано здесь: http://stackoverflow.com/questions/14725789/passing-a-2d-matrix-from-java -to-c-file-through-jni – ajm475du
Есть ли какая-либо задержка для перехода из java в Fortran? – user3521129
Существует некоторая задержка, но она имеет порядок квадрата числа строк в матрице. Время, затрачиваемое на вычисление матричного произведения, имеет тенденцию доминировать над этим, будучи порядка куба числа строк в матрице. Это правило, которое поможет вам. Чтобы точно знать, что вы хотите измерить. – ajm475du