Pouvez vous rendre ce programme beaucoup plus rapide ? Il est en java mais peu importe c'est convertible dans votre langage préféré. Il est interdit d'utiliser la parallélisation ce serait trop facile
Quand je dis "beaucoup plus rapide", ça doit pouvoir gérer des tableau beaucoup plus grand que 1000 entrées sans problème.
(PS désolé pour l'indentation mais le forum ne garde pas les tabulations)
import java.util.Random;
public class Main {
private static Random rand = new Random();
static double[] tooSlow(double[] ta, double[] tb) {
if (ta.length != tb.length) {
throw new IllegalArgumentException();
}
int n = ta.length;
double[] result = new double[n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
if (i == j || i == k || j == k) {
continue;
}
if (i > j && i > k) {
result += ta[j] * tb[k];
}
if (i < j || i < k) {
result -= ta[j] * tb[k];
}
}
}
}
return result;
}
private static double[] generateRandomTable(int n) {
double[] t = new double[n];
for (int i = 0; i < n; i++) {
t = rand.nextDouble();
}
return t;
}
public static void main(String[] args) {
double[] ta = generateRandomTable(1000);
double[] tb = generateRandomTable(1000);
long t0 = System.currentTimeMillis();
tooSlow(ta, tb);
System.out.println((System.currentTimeMillis() - t0) + "ms");
}
}