sludgefrog,
Is the entire grid visible? If not, you could make things faster by only drawing the ones that are visible.
I don't know much about performance tuning in Love, I came here to see if anyone else had answered your question & was bummed that no one had yet.
I do know that the STI library (
https://github.com/karai17/Simple-Tiled-Implementation/) has been tuned to get good performance (using a sprite batch operation to do bulk drawing was one performance improvement IIRC). I wrote up a tutorial on how to programmatically generate a tilemap (
https://github.com/prust/sti-pg-example), but if you're looking for solid colors instead of graphics, I'm not sure it's the direction you'll want to go.
I would guess that it would be much more performant to draw to a Canvas (aka Framebuffer) once and then display that on the screen. You should find that moving it around and/or changing parts of it will be more performant than re-drawing the whole thing every time. But I'm only guessing, I haven't yet done or optimized this sort of thing. Here's the docs for Canvas:
https://love2d.org/wiki/Canvas