If you're looking for suggestions, I'd suggest that you make your generator use
more variables instead of object positions. Then instead of populating
the level with tiles as you generate them, do it after you've generated your level. You've already got them in an array, so there isn't really a need to create them as soon as possible.
It'd be pretty zippy if you do that, I think.