I'll show the difference between the both on the low level.
The normal SELECT CASE statement is been compiled using FLOATING-POINT statements.
FILD,FSTP, FCOMP. Also the operators for the comparison are taken from temporary memory locations, while the values in the "AS LONG" are beeing compiled into the code.
Example:
MOV EAX, DWORD 00000001 ' from the CASE / AS LONG
FLD EXT (TBYTE) PTR [EBP-40] ' from the standard SELECT CASE
Therefore its advisable to prefer SELECT CASE AS LONG where possible.
REGISTER R01 AS LONG,R02 AS LONG
!NOP
R01=100
SELECT CASE R01
' SELECT CASE AS LONG R01
!NOP
CASE 1: REM
!NOP
CASE 2: REM
!NOP
CASE ELSE
!NOP
END SELECT
!NOP
FOR R02=0 TO R01+5
!NOP
NEXT
!NOP
----------------------------------------------------------
SELECT CASE AS LONG
----------------------------------------------------------
4023D0 90 NOP
4023D1 C7C664000000 MOV ESI, DWORD 00000064
4023D7 8975C0 MOV DWORD PTR [EBP-40], ESI
4023DA 90 NOP
' ---------------------------- CASE 1: REM
4023DB B801000000 MOV EAX, DWORD 00000001
4023E0 3B45C0 CMP EAX, DWORD PTR [EBP-40]
4023E3 0F8506000000 JNZ L4023EF
4023E9 90 NOP
4023EA E916000000 JMP L402405
'----------------------------
' ---------------------------- CASE 2: REM
4023EF B802000000 MOV EAX, DWORD 00000002
4023F4 3B45C0 CMP EAX, DWORD PTR [EBP-40]
4023F7 0F8506000000 JNZ L402403
4023FD 90 NOP
4023FE E902000000 JMP L402405
'----------------------------
402403 90 NOP
402404 90 NOP
402405 90 NOP
402406 B805000000 MOV EAX, DWORD 00000005
40240B 03C6 ADD EAX, ESI
40240D 89856CFFFFFF MOV DWORD PTR [EBP+FFFFFF6C], EAX
402413 C7C700000000 MOV EDI, DWORD 00000000
402419 E903000000 JMP L402421
40241E 90 NOP
40241F FFC7 INC EDI
402421 8BC7 MOV EAX, EDI
402423 3B856CFFFFFF CMP EAX, DWORD PTR [EBP+FFFFFF6C]
402429 7EF3 JLE SHORT L40241E
40242B 90 NOP
----------------------------------------------------------
SELECT CASE
----------------------------------------------------------
4023D0 90 NOP
4023D1 C7C664000000 MOV ESI, DWORD 00000064
4023D7 8975A4 MOV DWORD PTR [EBP-5C], ESI
4023DA DB45A4 FILD LONG PTR [EBP-5C]
4023DD DB7DC0 FSTP EXT (TBYTE) PTR [EBP-40]
4023E0 90 NOP
' ---------------------------- CASE 1: REM
4023E1 D9E8 FLD1
4023E3 DB6DC0 FLD EXT (TBYTE) PTR [EBP-40]
4023E6 DED9 FCOMPP
4023E8 DFE0 FNSTSW AX
4023EA 9E SAHF
4023EB 0F8506000000 JNZ L4023F7
4023F1 90 NOP
4023F2 E91C000000 JMP L402413
' ----------------------------
' ---------------------------- CASE 2: REM
4023F7 DF0534674000 FILD INTEGER PTR [00406734]
4023FD DB6DC0 FLD EXT (TBYTE) PTR [EBP-40]
402400 DED9 FCOMPP
402402 DFE0 FNSTSW AX
402404 9E SAHF
402405 0F8506000000 JNZ L402411
40240B 90 NOP
40240C E902000000 JMP L402413
' ----------------------------
402411 90 NOP
402412 90 NOP
402413 90 NOP
402414 B805000000 MOV EAX, DWORD 00000005
402419 03C6 ADD EAX, ESI
40241B 89856CFFFFFF MOV DWORD PTR [EBP+FFFFFF6C], EAX
402421 C7C700000000 MOV EDI, DWORD 00000000
402427 E903000000 JMP L40242F
40242C 90 NOP
40242D FFC7 INC EDI
40242F 8BC7 MOV EAX, EDI
402431 3B856CFFFFFF CMP EAX, DWORD PTR [EBP+FFFFFF6C]
402437 7EF3 JLE SHORT L40242C
402439 90 NOP