For computation: Use packed arrays. Keep them packed.
For plotting: I'm not sure. ArrayPlot[]
in the following runs in about in 0.7-0.8 sec; MatrixPlot[]
in 5-6 sec.
ArrayPlot[RandomReal[1, {5000, 10000}]]
MatrixPlot[RandomReal[1, {5000, 10000}]]
It's possible that your actual code is not as efficient as it could be. But how could anyone tell that without knowing what the code is?