Experimenting with Frame Rates

Flex compiler builds an swf file, with a default frame rate of 24 frames per second, unless another value is specified during the compilation. For example,

mxmlc -default-frame-rate=50 HelloWorld.mxml

This command will build the swf file with the frame rate of fifty frames per second. Display list rendering and the ActionScript execution take turns, hence the frame rate can affect your application performance.
Setting the frame rate to fifty does not mean that each frame will be displayed in exactly 20 milliseconds, as there is some OS/browser overhead. Besides, some browsers may impose restrictions on plugins to lower CPU utilization on the user’s machine.

To see how the compile time setting of the default-frame-rate option affects execution of the program let’s write a small application that on each enterFrame event performs a simple calculation of the actual frame rate.

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”horizontal”
var lastTime:int;
function enterFrameHandler():void {

<mx:Button label=”Button”/>
I ran this program on a Windows XP laptop with a single 1.8Ghz CPU in the Internet Explorer and FireFox browsers. Tables 1 and 2 show the difference between requested and actual frame rates and how hard the CPU works based on the frame rate settings.

default-frame-rate 10 24 50 100
Actual frame rate 9-10 18-26 35-52 50-110
CPU utilization 15-17% 15-20% 18-20% 26-28%

Table 1 Frame rates with Internet Explorer 6

default-frame-rate 10 24 50 100
Actual frame rate 9-10 16-22 41-50 70-100
CPU utilization 16-20% 18-20% 22-25% 30-33%

Table 2 Frame rates with FireFox 1.5

While results slightly vary, they are self explanatory – lower frame rates translate into lower CPU utilization. You should experiment with frame rate in your application to find the right balance between the GUI performance and CPU usage.

Remember, your users may be running several programs at the same time, and you do not want to put their CPU on its knees just because you’ve enjoyed super smooth graphics rendering. If you are not creating a movie, keep the frame rate as low as you can.