std::vector<T>::at(i)は境界チェック(iがthis.size()以上かを比較、実装によってはもっと色々やってるかも)
をするんで単純に配列を[i]で参照してたものと比べると遅くなる。

でさらにそれが毎フレーム、しかも二重ループ内でのgetMapObjとかで使われてて
そいつらの内部でもループするから(ry
実際どんだけコストがかかってるかはプロファイル取ってみないとわからんけどね

とりあえずmapObj.at(i)使ってたところを全部mapObj[i]にして見てどれだけ速くなったか試してみてくれ
フレームあたりの呼び出し頻度から考えればそれなりに改善するとは思うんだけど