Bonjour à tous, j'ai des questions concernant la façon dont c++ gère certaines allocation de mémoire.
J'ai besoin de créer une matrice de petits entiers relativement grande (16000*16000) et d'en calculer les puissances selon un algèbre Max+(je remplace l'addition par min et la multiplication par l'addition).
J'en suis pour l'instant à calculer la première matrice (puissance 1). Évidemment j'ai testé un short Tab[16000][16000] qui me donnait un stack overflow, du coup j'ai remplacé ça en inscrivant chaque case dans un fichier txt, mais les entrées sorties en mémoire sont réputés comme étant super lent.
J'aimerais donc garder la matrice totale en mémoire vive, j'ai remplacé les inscriptions dans le fichier txt par un truc dans ce genre :
mais j'ai l'impression que le programme ne va pas plus vite, loin de là.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 short **Matr= new short*[16824]; for(i=0;i<16824;i++){ Matr[i]=new short[16824]; }
Les pointeurs pointent-ils bien vers la ram?
Y a-t-il un autre moyen pour calculer la totalité de ma matrice plus rapidement?
Y a-t-il un autre moyen que les threads pour utiliser la puissances de mes 4 procs en meme temps (pour l'instant un seul mouline pendant l'exécution) ?
Merci
Partager