Compressing files

How can I compress a file with a lot of meshes and data so that Blender can run more smoothly and faster? Basically I have a bunch of roofs in my scene with a modeled roof tile that was arrayed. I also have many other objects that are different from each other.

Hum, you can enable compression when you save files (in the preferences) , so .blend will get lighter but your scene won’t be smoother.

To get a faster viewport it’s another story , you may want to reduce the polycount, and use normal maps instead of geometry when that make sense.
You can also have a lowpoly roof that is enabled in the viewport, and use the highpoly one only at rendertime.

you have to use proxy

Okay, I just don’t know how to do textures with a convincing bump without subdividing the mesh a bunch of times.

One solution that is quite simple is to desactivate some modifiers in the viewport, so heavy polygon stuff append only at render time.

By bump I assume you mean displacement. With Cycles you can try using Adaptive subdivision (enable Cycles Experimental features, add a Subdivision Surface modifier, check the Adaptive box) which will leave your original mesh alone (needs no extra polygons at all) and then at render time it will dynamically subdivide the object based on how large it is in the camera view.