The program runs as fast as it can and the execution time of each iteration thru the loop depends on the code that is executed at that iteration. In other words, which IF statements evaluates to true and which doesn't.

For example:
Code:
Main:
  TOGGLE GPIO.0
  PAUSE 1  
GOTO Main
This will take the same amount of time each iteration and it's 1ms (which is the PAUSE statement) + however long the TOGGLE command takes (a couple of instruction cycles) + another two instruction cycles for the GOTO command.

If the PIC runs at 4MHz each instruction cycle is 1us. Most ASM commands executes in one cycle, some (like jumps) takes two. Each PBP statements gets translated into several ASM instructions and there's no list of how many that is because it varies depending on various things.

If you want to KNOW how fast your program runs the easiest way is to measure it. If you NEED it to run at specific pace you should resort to using a timer.

/Henrik.