> I don't think the update is every second

Update of combat between guards and creatures is. There is check ```timerUpdateAITargets == 0```
> Why special optimisation required?

It's not mandatory of course but with growing of the number of aggressive creatures and guards it can take several ms to cast getLOS rays. I described that in responses to Scrawl above.
> couldn't you simply remove the extra iteration inside update() method?

Thing here is that everyone don't fight with everyone. I didn't want to make listGuards a class member or send it to updateActor(), don't think it's necessary either.