I updated to SVN 1815 where this comes up too. Auto sea explore takes a long time to compute on every unit and auto piracy has this too and behaves different from what I've seen in the past. I put one privateer on auto piracy while in a stack in my cultural borders and nothing happens, except that another privateer in the same stack is awakened from sleep. After moving the priv near the enemy coast it does piracy but it seems to be limited to a certain radius around the plot from where it startet (this might be coincedental). Also it never sleeps for repairs despite no enemy naval units near it. Another general observation is, that the naval AI really likes to hit reefs with their moves
I can post another save with a 100 privs to play around with.
The existing one will be fine. I'm sure this will turn out to be (essentially) the same thinge that I addressed in elements of the naval AI a while ago. Basically it boils down to ocean path generation between tiles separated by land on the direct path (so the actual path is very indirect) being extremely expensive to compute. Several AI routines tried to generate paths to potential targets that were literally on the other side of the world. I addressed this by limitting their search to a certain radius (which is probably why you're seing the change in privateer behaviour). It's a tricky balancing act between performance and effectiveness (when the nearest targets really are very distant). For now I'm veering on the side of performance, because the effect is so dramatic. Longer term I need to establish a secondary routine that (if the primary search cannot find anything useful to do) establishes some pre-computed waypoints and just has things move to one of them before searching again (or something similar).
Edit - actually your case was something quite different! It was down to a 'cheat' (IMO) in the AI (and player automation) explore routine. When deciding wheer to move for exploration it considers every tile in a (quite large range) and gives each a score according to how good it would be to go theer for exploration purposes. This score score goody huts you have already revealed very highly, but in their absence it scores unrevealed tiles at 10000, and each unrevealed neighbour at 1000, plus a bonus for coasts and owned tiles. As it enumerates the tiles, for each one that has a higher score than the highest it has so far considered minus a max possible random adjust (see later) it evaluates the path to it, and if it is reachable saves that tile as the best so far along with its score adjusted by a random adjustment to prevent everything always pathing the same way.
This causes a riduculous amount of path generation for two reasons:
1) Adding the random adjust AFTER the pathability check means it has to make the pathability check for all tile score that are within the max random adjust of the best so far. I have changed it to add the random adjust before the pathability check, so that it only has to generate the path if ther result exceeds the best score so far.
2) IMO, even considering tiles that are not even adjacent to something you already know about is basically a cheat! This means the automation/AI can effectively spot nearby coasts by 'magic'. It also means it has to evaluate pathability to nearly every ocean tile, because they all score about the same. I have adjusted it to skip tiles that it doesn't yet know about (so now it considers revealed tiles and tiles adjacent to revelaed tiles - i.e. - your knowledge horizon)
Doing both of these things reduced the time for ONE caraval to perform its automated explore move (from your posted save game, I just hit the automated-explore button for the first caravel that comes up selected on load) from 9.92 seconds to 0.95 seconds. There is still definate room for improvement (evaluate all scores first and sort them, then evaluate paths in reverse score orde,r stopping as soon as one is pathable) but I'll get to that next week. I think the order of magnitude difference the simple changes make justifies pushing this change now...
I have pushed this change to SVN and will also post it on the patch thread (first v21 patch).