Por abundar un poquito mas y examinando el ASM de seoane aún se puede optimizar algo mas quitando unas líneas y cambiando otras, seguramente ganemos en rapidez...
Código Delphi
[-]
function Longitud(Str: PChar): Integer;
asm
MOV Result,0
DEC EAX
@@SIG:
INC EAX
CMP BYTE PTR [EAX],0
JE @@SALIR
CMP BYTE PTR [EAX],33
JB @@SIG
INC Result
JMP @@SIG
@@SALIR:
end;