Another program profiling tool: The idea is that you compile with the -p flag (and also use the -p flag on the load line) It's a good idea to shut off all I/O if possible When you run the program compiled with the -p option, you get a file called mon.out You then run the "prof" program with the -C argument prof -C ExecutableName > output You must give the name of the executable and you must also specify the -C flag. The output looks as follows: Where %time is the % of total time spent in the routine, cumsecs gives the amount of time spent on a routine and all routines above it. The # calls is self explanatory ms/call gives the average time per call in miliseconds. %time cumsecs #call ms/call name 91.0 1.52 1005 1.51 Walk(POINT*, int, int&, int&) [___0FEWalkP6FPOINTiRiTD] 4.2 1.59 400 0.17 sbrk [_sbrk] 1.2 1.61 mrand48 [_mrand48] 0.6 1.62 14071 0.00 .mul 0.6 1.63 1 10.00 ReportBounds(POINT*, int, int&, int&, int&, int&) [___0FMReportBoundsP6FPOINTiRiNDD] 0.6 1.64 2019 0.00 malloc [_malloc] 0.6 1.65 673 0.01 strlen [_strlen] Using -p can slow the program down, so you shouldn't use this option unless you really want to get profile information.