Recently I have been trying to identify performance problem in my SWF and to that end enrolled in Monocle prerelease program. That is where I have found this post by Gavin Peacock, Adobe:
The problem is that the GPU memory can only be swapped once in a 60th of a second when VSync is enabled by the OS. If the player tries to swap GPU memory a second time, the call will block until the next VSync occurs. “Waiting for GPU” reports the amount of time blocked waiting for the next VSync. VSync is generally fixed at 60 FPS by the hardware. But you can set the frame rate of your SWF to any value less than or equal to 60 FPS. Setting a lower frame rate may actually improve your performance because you can avoid this blocking time. As it is there is kind of beat interference between the hardware VSync and the player frame rate. We have been working with the runtime team to find ways to reduce this effect.
My reading is that if your frame code is able to run fast enough to actually call context3D.present() faster than every 1/60th of second, you will be losing frames and your fps will go down dramatically. Therefore you should settle at something less than 60 fps.
Update: with Nov. 6 FP 11.5 release the situation around frame rate has changed, apparently. Here is another quote from Gavin Peacock:
Since there can be multiple instances of the flash player each running at different frame rates, the player will try to synchronize wake up times to even multiples of 60fps. If you set your frame rate at something that divides evenly into 60, you will get a nice even set of grey bars that line up pretty closely to the red line. But if you select, something that doesn’t divide evenly, like 24fps, you will see the grey bars dance up and down around the red line.
This is how it looks in profiler timeline:
The conclusion is that only 30, 20, 15, etc, fps will now run without random frames taking more time than they should for no reason. Also note that 60 fps swf now also runs fine for the most of time (but for some reason still skips frames if there is mouse activity).