Se parliamo di PNG è tutto un altro discorso, per avere accesso casuale in O(1) a qualunque pixel dell'immagine devi necessariamente scompattarlo (fai conto che un PNG concettualmente è come se fosse un .BMP zippato).
Al di là del fatto che per il memory mapping devi usare immagini non compresse (per il motivo detto sopra), se tutto va lento significa che hai finito la memoria fisica (lo spazio di indirizzi virtuale ha ancora spazio, ma il sistema operativo è costretto a fare swapping, per cui deve passare al disco e tutto diventa ordini di grandezza più lento).Per quanto riguarda la mappatura in memoria, con Xna io e il mio portatilino soffriamo abbastanza non appena carichiamo una png 1000x1000. C'è un modo per usare una memoria DIVERSA da quella che serve a Xna?
Again: ti conviene ragionare per tile, caricando solo quelle che ti servono e buttandole via quando non ti servono più (eventualmente tieni una cache di dimensioni limitate), invece di decomprimere e caricare completamente in memoria (=il sistema operativo deve allocare effettivamente spazio per tutto in memoria fisica) PNG enormi.