With the mention of code hog, I just want to give my findings.
I ventured into AVR land because I want to generate sinewave of 1Hz-200KHz.
One can do that by increasing a 24-bit counter with a fix value and use the highest 8-bit as index to look up a sine table of 256 values. The value is the output to the port with a D/A converter.
The lookup table is in Flash program memory and it takes a total of 6 AVR instructions to do all that with a loop time of just 9 clock cycles. This is just a tiny bit more than the time where the PIC can execute a single GOTO instruction.
Code:
LOOP1:
add r28,r24 ; 1
adc r29,r25 ; 1 (with carry)
adc r30,r26 ; 1 (with carry)
lpm ; 3
out PORTB,r0 ; 1
rjmp LOOP1 ; 2 => 9 cycles
You can try to do the same routine with PIC and count the instructions required and the total number of clock cycles for a loop. Faster loop gives higher frequencies.
No comment on other features of AVR as I am just started.