Don't know if anyone has mentioned it yet .. the fastest way to determine line of sight is to precalculate it.
Three most important rules in game programming - precalculate, precalculate and precalculate.
If you are using a smallish grid like that you can easily generate a PVS (potentially visible set) of what other cells are potentially visible from each cell. This greatly cuts down on the checks you need to do.
e.g. if enemy 1 is in cell 20, 24 and your pvs tells you that the cell your player is in 90.34 is not visible from there due to a wall in the way, that's it, you know it's not in sight. You only end up needing to do realtime checks for dynamic objects that might get in the way.
while i agree for more complex scenarios, pre-calculating line of sight would be beneficial. In the scenario the OP has described, i find it doubtful he'll need to pre-calculate the line of sight for any serious performance gains. as well, creating a grid based PVS with objects that arn't locked to the grid, their's the small possibility that valid line of sight's could be missed with this method.