Page 1 of 1

PostPosted: Tue Oct 09, 2001 12:48 pm
by dgries
I am trying to make my program more efficient and a programmer told me to see if pocketc could 'trace' my program. Does anyone out there know if I can do this with pocketc? Thanks much.

PostPosted: Tue Oct 09, 2001 1:07 pm
by guy
You'd need a modified PocketC runtime. I think what you're after is something called profiling. This shows you which parts of the program are most used and take up most time.

The best thing to do is to just look at your source code and optimise the bits that are used the most. Look particularly at loops and loops within loops. See whether there is any code that you can move to outside the loop. For short loops you could try "unrolling" them. Instead of having a loop, repeat the code for each iteration.

See whether replacing a function call with the function body inline helps. Particularly for function calls within loops. See whether it makes sense to replace a function with a macro.

If you have any loops that contain calculations on the loop variable, see whether having a second variable that you "lock" to the loop variable results in fewer or simpler operations. If you have two variables locked, try using just one (so try the optimisation both ways around).

Look to see if you can replace several "little" operations with one big operation.

Check to see whether you're doing the same calculation more than once, and replace second calculation with a variable that you assigned to the first one.

Remove as many string assignments and operations as possible.

Check that you're not asigning values to variables that aren't used, or to variables that are simply functions of other variables.

Change "expensive" operations to cheap ones. For example change multiplication by powers of two into left shifts. Change division by powers of two into right shifts.

You could write a program that takes your source code and adds a write to a file at each statement. Then you could run the resultant program and analyse the file that is written.

There may be some shareware profilers available that would work with Pocketc.

Just make the parts of the program where the processor spends most of its time are as efficient as possible.