Another question for you Wilson- What do you do to improve performance usually? On a previous map I worked on, a few changes improved perf twice over and I have no real idea why.
It really depends on the map and where the performance problems are coming from, that decides where you put the most effort. I'll usually start off first checking the level against our standard budgets for things like Triangle Count and Draw Calls. Tri count should be lower than 2.5 mil and Draw Calls lower than 2500 in areas that are accessible by players(will be alot higher in editor in most cases.. always check performance numbers in pure game mode to be sure, ie. on a dedi server). I'll then try to remove objects, shaders from objects and adjust the view and LOD ratios of objects so they arent visible unless they need to be, in areas where these numbers are too high, with the goal of bringing them back within a reasonable distance of the budget.. this usually also includes placing occluder areas strategically inside objects that dont already have them(such as base walls and some larger buildings, large terrain features etc) and also checking and reducing "overdraw" which is a term that describes redundant rendering.. where the engine is rendering pixels over the top of other pixels, where the bottom-most pixel get drawn over, but is still rendered first anyway.. decals are a the main antoganists here, you should try to make sure there is as little overlap as possible in them.
One other thing I do is to make sure that terrain outside the play area contains as little geometric detail as possible, which really just means i smooth it out until its able to swap down LOD levels properly.... Cryengine terrain thats highly detailed wont switch to lower lod's as well or as far as smoother terrain will... you can visualise this either in wireframe mode, or using the coloured terrain tile bounding boxes.
Once Ive gotten the tri count and DP into a reasonable range from player accessible areas, ill run some profiling on the map while running around ingame, to check if it has any obvious bottlenecks, such as frametime for the particle engine, renderer etc.. Depending on how these different areas perform ill look at reducing the quality of the particles, or creating specific "low-spec" cheaper variants, ill make custom materials for objects that dont have anything besides a generic diffuse and normal map(no env maps, detail maps, decal layers etc) or ill get more aggressive in view and lod ratio adjustments.
Its really an iterative process. I make a bunch of changes that look as though they will help performance, then test it to see how much it actually did help, rinse and repeat until performance is where I want it, or the release deadline smacks me in the butt lol.
EDIT: One thing I should also mention is that you should run these tests in all spec settings, from low to very high and check them all... something that runs fine in medium, may kill the engine on very high or vise versa. Also, try not to use "Frame per second" as a guideline for performance at all as its tied closely to ur hardware and isnt an indication of what other users will experience. "Frametime" in percentage(as given by the profiling tools) is the best way to measure performance. generally if the particle engine is taking 5% of frametime to render on one pc, it will be taking 5% on others, even though the pc's themselves may have FPS differences of 30 or more.