revisied code with a speed test added
Code:
' USB sample program for PIC18F4550 CDC serial port emulation
'  Requires PBP 2.60 or later
'  Compilation of this program requires that specific support files be
'  available in the source directory.  For detailed information, see
'  the file PBP\USB18\USB.TXT.
 Include "cdc_desc.bas" ' Include the HID descriptors

Define  OSC     48
trise.3 = 0
buffer Var Byte[16]
cnt Var Byte
    
 OSCTUNE.6 = 1  ' Enable PLL for 18F87J50 family
 Pause 10
'*****************************************
'--------------Speed test 
 
speedtest:
    toggle porte.3
    goto speedtest
 
'--------------End test
'******************************************    
    
    USBInit   ' Get USB going
' Wait for USB input
idleloop:
    
 USBService  ' Must service USB regularly
 cnt = 16  ' Specify input buffer size
 USBIn 3, buffer, cnt, idleloop
' Message received
 buffer[0] = "H"
 buffer[1] = "e"
 buffer[2] = "l"
 buffer[3] = "l"
 buffer[4] = "o"
 buffer[5] = " "
 buffer[6] = "W"
 buffer[7] = "o"
 buffer[8] = "r"
 buffer[9] = "l"
 buffer[10] = "d"
 buffer[11] = 13
 buffer[12] = 10
 buffer[13] = 0
outloop:
 USBService  ' Must service USB regularly
 USBOut 3, buffer, 14, outloop
 Goto idleloop  ' Wait for next buffer
the results of the speed test: pin toggles at 3Mhz. To be clear, there is .3333uS between toggles. Now I don't feel like that is correct. lets see: 48Mhz=12Mips. So thats .08uS per instruction? So we are executing 4 instructions? Hmm, that doesn't sound right.

Ok, I will see if someone else can think better then I this evening