Currently you only seem to be poking around. Why not actually profile your code?
Get valgrind and kcachegrind. Assuming your binary is called "zombies", do this:
valgrind --tool=callgrind --callgrind-out-file=zombies.callgrind ./zombies
This will run your game in a virtual CPU and record all function calls and see how long they will take. It also records API calls and everything. It will be very slow but don't worry, it will not produce false results.
Then use kcachegrind to visualize all this in an easy and colorful browser:
kcachegrind zombies.callgrind
This should get you a whole lot farther than any amount of guessing will.
EDIT: It will look something like
this. Pay attention to the "self" bar which show you how long a function will take by itself.