10 Mio Werte zu speichern ist überhaupt kein problem.
Solange du den primitiven typ int und nicht den boxed Integer nimmst kommst du auf ~38MB (10.000.000 Einträge * 4 Byte pro Eintrag / 1024 / 1024). Das sollte dein Ram verkraften
Performance mäßig gibt es überhaupt keinen boost das in mehrere dimensionen zu packen.
Je nachdem wie du die werte ausliest und wie dein compiler das optimiert könnte es sogar länger dauern.
array[i] muss einen wert auslesen
array[i][j] muss zwei werte auslesen